UNPKG

@layerzerolabs/oft-alt-evm

Version:

LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation

1 lines 85.9 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_localEidV2","type":"uint32","internalType":"uint32"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getFee","inputs":[{"name":"_params","type":"tuple","internalType":"struct IExecutorFeeLib.FeeParamsForRead","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IExecutor.DstConfig","components":[{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_params","type":"tuple","internalType":"struct IExecutorFeeLib.FeeParams","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"address","internalType":"address"},{"name":"calldataSize","type":"uint256","internalType":"uint256"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IExecutor.DstConfig","components":[{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFeeOnSend","inputs":[{"name":"_params","type":"tuple","internalType":"struct IExecutorFeeLib.FeeParams","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"address","internalType":"address"},{"name":"calldataSize","type":"uint256","internalType":"uint256"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IExecutor.DstConfig","components":[{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFeeOnSend","inputs":[{"name":"_params","type":"tuple","internalType":"struct IExecutorFeeLib.FeeParamsForRead","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IExecutor.DstConfig","components":[{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint64","internalType":"uint64"},{"name":"minor","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"withdrawToken","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"Executor_EidNotSupported","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"}]},{"type":"error","name":"Executor_InvalidExecutorOptions","inputs":[{"name":"cursor","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Executor_InvalidLzComposeOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReadOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReceiveOption","inputs":[]},{"type":"error","name":"Executor_InvalidNativeDropOption","inputs":[]},{"type":"error","name":"Executor_NativeAmountExceedsCap","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"cap","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Executor_NoOptions","inputs":[]},{"type":"error","name":"Executor_UnsupportedOptionType","inputs":[{"name":"optionType","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"Executor_ZeroCalldataSizeProvided","inputs":[]},{"type":"error","name":"Executor_ZeroLzComposeGasProvided","inputs":[]},{"type":"error","name":"Executor_ZeroLzReceiveGasProvided","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Transfer_NativeFailed","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Transfer_ToAddressIsZero","inputs":[]}],"bytecode":{"object":"0x60c060405234801562000010575f80fd5b5060405162001b5038038062001b508339810160408190526200003391620000cf565b33806200005957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000648162000080565b5063ffffffff1660a052670de0b6b3a7640000608052620000fb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215620000e0575f80fd5b815163ffffffff81168114620000f4575f80fd5b9392505050565b60805160a051611a2c620001245f395f818161023a01526102ee01525f61083d0152611a2c5ff3fe608060405260043610610096575f3560e01c8063566ef76211610066578063715018a61161004c578063715018a6146101715780638da5cb5b14610185578063f2fde38b146101b8575f80fd5b8063566ef762146101335780636500378414610152575f80fd5b806301e33667146100a1578063337c7a9e146100c2578063434ee016146100f457806354fd4d5014610113575f80fd5b3661009d57005b5f80fd5b3480156100ac575f80fd5b506100c06100bb366004611549565b6101d7565b005b3480156100cd575f80fd5b506100e16100dc3660046115dd565b6101ef565b6040519081526020015b60405180910390f35b3480156100ff575f80fd5b506100e161010e366004611644565b610408565b34801561011e575f80fd5b506040805160018082526020820152016100eb565b34801561013e575f80fd5b506100e161014d366004611644565b61060a565b34801561015d575f80fd5b506100e161016c3660046115dd565b610620565b34801561017c575f80fd5b506100c061062d565b348015610190575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100eb565b3480156101c3575f80fd5b506100c06101d236600461168d565b610640565b6101df6106a3565b6101ea8383836106f5565b505050565b5f6101fd60208501856116ad565b67ffffffffffffffff165f0361026c576040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b5f80806102a960018261028260208b018b6116ad565b61029260a08c0160808d016116ad565b6102a260808d0160608e016116f1565b8b8b610725565b919450925090505f8080806102c160208d018d61168d565b6040517f88a4124c00000000000000000000000000000000000000000000000000000000815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152871660248201526044810188905273ffffffffffffffffffffffffffffffffffffffff91909116906388a4124c90606401608060405180830381865afa158015610360573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610384919061170c565b929650909450925090506103ce846103a260408e0160208f0161175e565b8e60400160208101906103b5919061175e565b8e60400160208101906103c891906116f1565b856107b5565b97506103ee8784848f60400160208101906103e9919061175e565b6108ab565b6103f890896117ac565b9c9b505050505050505050505050565b5f61041660208501856116ad565b67ffffffffffffffff165f036104715761043660408601602087016117c5565b6040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610263565b5f806104c38161048f61048a60408b0160208c016117c5565b505f90565b61049c60208a018a6116ad565b6104ac60a08b0160808c016116ad565b6104bc60808c0160608d016116f1565b8a8a610725565b5090925090505f8080806104da60208c018c61168d565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61050560408e0160208f016117c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa15801561056e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610592919061170c565b929650909450925090506105d6846105b060408d0160208e0161175e565b8d60800160208101906105c3919061175e565b8d60400160208101906103c891906116f1565b96506105f18684848e60800160208101906103e9919061175e565b6105fb90886117ac565b9b9a5050505050505050505050565b5f61061785858585610408565b95945050505050565b5f610617858585856101ef565b6106356106a3565b61063e5f610911565b565b6106486106a3565b73ffffffffffffffffffffffffffffffffffffffff8116610697576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610263565b6106a081610911565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461063e576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610263565b73ffffffffffffffffffffffffffffffffffffffff831661071a576101ea8282610985565b6101ea838383610a87565b5f805f8061073686868d8d8b610af5565b805160608201516080830151919650935090915061075e9067ffffffffffffffff8a166117e8565b60208201516107779067ffffffffffffffff8c166117ac565b61078191906117ac565b92508060400151156107a757606461079a8460666117e8565b6107a491906117ff565b92505b509750975097945050505050565b5f8061ffff8616156107c757856107c9565b845b90505f6127106107dd61ffff84168a6117e8565b6107e791906117ff565b90506fffffffffffffffffffffffffffffffff8416158061081857506fffffffffffffffffffffffffffffffff8516155b156108265791506106179050565b5f88856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff1661087991906117e8565b61088391906117ff565b61088d91906117ac565b905081811161089c578161089e565b805b9998505050505050505050565b5f8415610909576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff16886108eb91906117e8565b6108f591906117ff565b6108ff91906117e8565b61061791906117ff565b949350505050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166109d2576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610a28576040519150601f19603f3d011682016040523d82523d5f602084013e610a2d565b606091505b50509050806101ea576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610263565b73ffffffffffffffffffffffffffffffffffffffff8216610ad4576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ea73ffffffffffffffffffffffffffffffffffffffff8416838361110f565b610b2a6040518060a001604052805f81526020015f81526020015f151581526020015f63ffffffff1681526020015f81525090565b5f859003610b63576040517e575ea100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80805b87831015610fbc575f368180610b7e8d8d8961119c565b9950919550935091508690507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff851601610ca6578a15610bf1576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f80610bfd85856111f1565b915091508b8015610c1f57505f816fffffffffffffffffffffffffffffffff16115b15610c5b576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff87166004820152602401610263565b806fffffffffffffffffffffffffffffffff168a5f01818151610c7e91906117ac565b905250610c9d6fffffffffffffffffffffffffffffffff8316896117ac565b97505050610fb3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff851601610d48578a15610d0d576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f610d18848461126c565b509050806fffffffffffffffffffffffffffffffff16895f01818151610d3e91906117ac565b905250610fb39050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610e75578915610daf576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f80610dbb85856112c1565b9250925050816fffffffffffffffffffffffffffffffff165f03610e0b576040517fa169d0e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff168a5f01818151610e2e91906117ac565b90525060208a0180516fffffffffffffffffffffffffffffffff84169190610e579083906117ac565b90525060808a01805190610e6a82611837565b815250505050610fb3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff851601610eab5760016040890152610fb3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff851601610f7c578a610f11576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f805f610f1e868661134b565b925092509250806fffffffffffffffffffffffffffffffff168b5f01818151610f4791906117ac565b905250610f666fffffffffffffffffffffffffffffffff84168a6117ac565b9850610f72828961186e565b9750505050610fb3565b6040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b50505050610b67565b828814610ff8576040517f990776ea00000000000000000000000000000000000000000000000000000000815260048101849052602401610263565b83516fffffffffffffffffffffffffffffffff861610156110625783516040517e84ce0200000000000000000000000000000000000000000000000000000000815260048101919091526fffffffffffffffffffffffffffffffff86166024820152604401610263565b815f0361109b576040517fe5eb8f3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8680156110ac575063ffffffff8116155b156110e3576040517f6cc33f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81846020018181516110f591906117ac565b90525063ffffffff16606084015250909695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526101ea9084906113cc565b5f368160018401816111af888884611471565b6002929092019190506111c3888884611497565b94506001820161ffff821683016111dc81838b8d611892565b979b909a50969850505061ffff160193505050565b5f8060108314801590611205575060208314155b1561123c576040517f4796aee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124784845f6114bb565b915060208314611257575f611263565b611263848460106114bb565b90509250929050565b5f80603083146112a8576040517fc3a1858e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b384845f6114bb565b9150611263848460106114e1565b5f8080601284148015906112d6575060228414155b1561130d576040517f8b4aa70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131885855f611471565b9250611326858560026114bb565b915060228414611336575f611342565b611342858560126114bb565b90509250925092565b5f808060148414801590611360575060248414155b15611397576040517fdeb7fe4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113a285855f6114bb565b92506113b0858560106114fb565b9150602484146113c0575f611342565b611342858560146114bb565b5f8060205f8451602086015f885af1806113eb576040513d5f823e3d81fd5b50505f513d9150811561140257806001141561141c565b73ffffffffffffffffffffffffffffffffffffffff84163b155b1561146b576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610263565b50505050565b5f6002820161148281848688611892565b61148b916118b9565b60f01c95945050505050565b5f8383838181106114aa576114aa611901565b919091013560f81c95945050505050565b5f601082016114cc81848688611892565b6114d59161192e565b60801c95945050505050565b5f602082016114f281848688611892565b61061791611974565b5f6004820161150c81848688611892565b611515916119b0565b60e01c95945050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611544575f80fd5b919050565b5f805f6060848603121561155b575f80fd5b61156484611521565b925061157260208501611521565b9150604084013590509250925092565b5f60a08284031215611592575f80fd5b50919050565b5f8083601f8401126115a8575f80fd5b50813567ffffffffffffffff8111156115bf575f80fd5b6020830191508360208285010111156115d6575f80fd5b9250929050565b5f805f808486036101208112156115f2575f80fd5b60608112156115ff575f80fd5b508493506116108660608701611582565b925061010085013567ffffffffffffffff81111561162c575f80fd5b61163887828801611598565b95989497509550505050565b5f805f806101608587031215611658575f80fd5b6116628686611582565b93506116718660a08701611582565b925061014085013567ffffffffffffffff81111561162c575f80fd5b5f6020828403121561169d575f80fd5b6116a682611521565b9392505050565b5f602082840312156116bd575f80fd5b813567ffffffffffffffff811681146116a6575f80fd5b6fffffffffffffffffffffffffffffffff811681146106a0575f80fd5b5f60208284031215611701575f80fd5b81356116a6816116d4565b5f805f806080858703121561171f575f80fd5b845193506020850151611731816116d4565b6040860151909350611742816116d4565b6060860151909250611753816116d4565b939692955090935050565b5f6020828403121561176e575f80fd5b813561ffff811681146116a6575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156117bf576117bf61177f565b92915050565b5f602082840312156117d5575f80fd5b813563ffffffff811681146116a6575f80fd5b80820281158282048414176117bf576117bf61177f565b5f82611832577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118675761186761177f565b5060010190565b63ffffffff81811683821601908082111561188b5761188b61177f565b5092915050565b5f80858511156118a0575f80fd5b838611156118ac575f80fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156118f95780818660020360031b1b83161692505b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156118f95760109490940360031b84901b1690921692915050565b803560208310156117bf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156118f95760049490940360031b84901b169092169291505056fea2646970667358221220ca9d45c801b5ccbb302dcb12078bab5268980f6f82de99fc1d137bac6c0848e664736f6c63430008160033","sourceMap":"717:9671:81:-:0;;;1001:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1041:10;;1269:95:116;;1322:31;;-1:-1:-1;;;1322:31:116;;1350:1;1322:31;;;445:51:141;418:18;;1322:31:116;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;1063:24:81::1;;;::::0;1118:4:::1;1097:25;::::0;717:9671;;2912:187:116;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:116;;;-1:-1:-1;;;;;;3020:17:116;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:280:141:-;83:6;136:2;124:9;115:7;111:23;107:32;104:52;;;152:1;149;142:12;104:52;184:9;178:16;234:10;227:5;223:22;216:5;213:33;203:61;;260:1;257;250:12;203:61;283:5;14:280;-1:-1:-1;;;14:280:141:o;299:203::-;717:9671:81;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610096575f3560e01c8063566ef76211610066578063715018a61161004c578063715018a6146101715780638da5cb5b14610185578063f2fde38b146101b8575f80fd5b8063566ef762146101335780636500378414610152575f80fd5b806301e33667146100a1578063337c7a9e146100c2578063434ee016146100f457806354fd4d5014610113575f80fd5b3661009d57005b5f80fd5b3480156100ac575f80fd5b506100c06100bb366004611549565b6101d7565b005b3480156100cd575f80fd5b506100e16100dc3660046115dd565b6101ef565b6040519081526020015b60405180910390f35b3480156100ff575f80fd5b506100e161010e366004611644565b610408565b34801561011e575f80fd5b506040805160018082526020820152016100eb565b34801561013e575f80fd5b506100e161014d366004611644565b61060a565b34801561015d575f80fd5b506100e161016c3660046115dd565b610620565b34801561017c575f80fd5b506100c061062d565b348015610190575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100eb565b3480156101c3575f80fd5b506100c06101d236600461168d565b610640565b6101df6106a3565b6101ea8383836106f5565b505050565b5f6101fd60208501856116ad565b67ffffffffffffffff165f0361026c576040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b5f80806102a960018261028260208b018b6116ad565b61029260a08c0160808d016116ad565b6102a260808d0160608e016116f1565b8b8b610725565b919450925090505f8080806102c160208d018d61168d565b6040517f88a4124c00000000000000000000000000000000000000000000000000000000815263ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152871660248201526044810188905273ffffffffffffffffffffffffffffffffffffffff91909116906388a4124c90606401608060405180830381865afa158015610360573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610384919061170c565b929650909450925090506103ce846103a260408e0160208f0161175e565b8e60400160208101906103b5919061175e565b8e60400160208101906103c891906116f1565b856107b5565b97506103ee8784848f60400160208101906103e9919061175e565b6108ab565b6103f890896117ac565b9c9b505050505050505050505050565b5f61041660208501856116ad565b67ffffffffffffffff165f036104715761043660408601602087016117c5565b6040517fc3baa0b700000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610263565b5f806104c38161048f61048a60408b0160208c016117c5565b505f90565b61049c60208a018a6116ad565b6104ac60a08b0160808c016116ad565b6104bc60808c0160608d016116f1565b8a8a610725565b5090925090505f8080806104da60208c018c61168d565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c61050560408e0160208f016117c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa15801561056e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610592919061170c565b929650909450925090506105d6846105b060408d0160208e0161175e565b8d60800160208101906105c3919061175e565b8d60400160208101906103c891906116f1565b96506105f18684848e60800160208101906103e9919061175e565b6105fb90886117ac565b9b9a5050505050505050505050565b5f61061785858585610408565b95945050505050565b5f610617858585856101ef565b6106356106a3565b61063e5f610911565b565b6106486106a3565b73ffffffffffffffffffffffffffffffffffffffff8116610697576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610263565b6106a081610911565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461063e576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610263565b73ffffffffffffffffffffffffffffffffffffffff831661071a576101ea8282610985565b6101ea838383610a87565b5f805f8061073686868d8d8b610af5565b805160608201516080830151919650935090915061075e9067ffffffffffffffff8a166117e8565b60208201516107779067ffffffffffffffff8c166117ac565b61078191906117ac565b92508060400151156107a757606461079a8460666117e8565b6107a491906117ff565b92505b509750975097945050505050565b5f8061ffff8616156107c757856107c9565b845b90505f6127106107dd61ffff84168a6117e8565b6107e791906117ff565b90506fffffffffffffffffffffffffffffffff8416158061081857506fffffffffffffffffffffffffffffffff8516155b156108265791506106179050565b5f88856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff1661087991906117e8565b61088391906117ff565b61088d91906117ac565b905081811161089c578161089e565b805b9998505050505050505050565b5f8415610909576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff16886108eb91906117e8565b6108f591906117ff565b6108ff91906117e8565b61061791906117ff565b949350505050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166109d2576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610a28576040519150601f19603f3d011682016040523d82523d5f602084013e610a2d565b606091505b50509050806101ea576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610263565b73ffffffffffffffffffffffffffffffffffffffff8216610ad4576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ea73ffffffffffffffffffffffffffffffffffffffff8416838361110f565b610b2a6040518060a001604052805f81526020015f81526020015f151581526020015f63ffffffff1681526020015f81525090565b5f859003610b63576040517e575ea100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80805b87831015610fbc575f368180610b7e8d8d8961119c565b9950919550935091508690507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff851601610ca6578a15610bf1576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f80610bfd85856111f1565b915091508b8015610c1f57505f816fffffffffffffffffffffffffffffffff16115b15610c5b576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff87166004820152602401610263565b806fffffffffffffffffffffffffffffffff168a5f01818151610c7e91906117ac565b905250610c9d6fffffffffffffffffffffffffffffffff8316896117ac565b97505050610fb3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff851601610d48578a15610d0d576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f610d18848461126c565b509050806fffffffffffffffffffffffffffffffff16895f01818151610d3e91906117ac565b905250610fb39050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610e75578915610daf576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f80610dbb85856112c1565b9250925050816fffffffffffffffffffffffffffffffff165f03610e0b576040517fa169d0e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff168a5f01818151610e2e91906117ac565b90525060208a0180516fffffffffffffffffffffffffffffffff84169190610e579083906117ac565b90525060808a01805190610e6a82611837565b815250505050610fb3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff851601610eab5760016040890152610fb3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff851601610f7c578a610f11576040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b5f805f610f1e868661134b565b925092509250806fffffffffffffffffffffffffffffffff168b5f01818151610f4791906117ac565b905250610f666fffffffffffffffffffffffffffffffff84168a6117ac565b9850610f72828961186e565b9750505050610fb3565b6040517f052e551500000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610263565b50505050610b67565b828814610ff8576040517f990776ea00000000000000000000000000000000000000000000000000000000815260048101849052602401610263565b83516fffffffffffffffffffffffffffffffff861610156110625783516040517e84ce0200000000000000000000000000000000000000000000000000000000815260048101919091526fffffffffffffffffffffffffffffffff86166024820152604401610263565b815f0361109b576040517fe5eb8f3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8680156110ac575063ffffffff8116155b156110e3576040517f6cc33f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81846020018181516110f591906117ac565b90525063ffffffff16606084015250909695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526101ea9084906113cc565b5f368160018401816111af888884611471565b6002929092019190506111c3888884611497565b94506001820161ffff821683016111dc81838b8d611892565b979b909a50969850505061ffff160193505050565b5f8060108314801590611205575060208314155b1561123c576040517f4796aee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124784845f6114bb565b915060208314611257575f611263565b611263848460106114bb565b90509250929050565b5f80603083146112a8576040517fc3a1858e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b384845f6114bb565b9150611263848460106114e1565b5f8080601284148015906112d6575060228414155b1561130d576040517f8b4aa70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131885855f611471565b9250611326858560026114bb565b915060228414611336575f611342565b611342858560126114bb565b90509250925092565b5f808060148414801590611360575060248414155b15611397576040517fdeb7fe4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113a285855f6114bb565b92506113b0858560106114fb565b9150602484146113c0575f611342565b611342858560146114bb565b5f8060205f8451602086015f885af1806113eb576040513d5f823e3d81fd5b50505f513d9150811561140257806001141561141c565b73ffffffffffffffffffffffffffffffffffffffff84163b155b1561146b576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610263565b50505050565b5f6002820161148281848688611892565b61148b916118b9565b60f01c95945050505050565b5f8383838181106114aa576114aa611901565b919091013560f81c95945050505050565b5f601082016114cc81848688611892565b6114d59161192e565b60801c95945050505050565b5f602082016114f281848688611892565b61061791611974565b5f6004820161150c81848688611892565b611515916119b0565b60e01c95945050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611544575f80fd5b919050565b5f805f6060848603121561155b575f80fd5b61156484611521565b925061157260208501611521565b9150604084013590509250925092565b5f60a08284031215611592575f80fd5b50919050565b5f8083601f8401126115a8575f80fd5b50813567ffffffffffffffff8111156115bf575f80fd5b6020830191508360208285010111156115d6575f80fd5b9250929050565b5f805f808486036101208112156115f2575f80fd5b60608112156115ff575f80fd5b508493506116108660608701611582565b925061010085013567ffffffffffffffff81111561162c575f80fd5b61163887828801611598565b95989497509550505050565b5f805f806101608587031215611658575f80fd5b6116628686611582565b93506116718660a08701611582565b925061014085013567ffffffffffffffff81111561162c575f80fd5b5f6020828403121561169d575f80fd5b6116a682611521565b9392505050565b5f602082840312156116bd575f80fd5b813567ffffffffffffffff811681146116a6575f80fd5b6fffffffffffffffffffffffffffffffff811681146106a0575f80fd5b5f60208284031215611701575f80fd5b81356116a6816116d4565b5f805f806080858703121561171f575f80fd5b845193506020850151611731816116d4565b6040860151909350611742816116d4565b6060860151909250611753816116d4565b939692955090935050565b5f6020828403121561176e575f80fd5b813561ffff811681146116a6575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156117bf576117bf61177f565b92915050565b5f602082840312156117d5575f80fd5b813563ffffffff811681146116a6575f80fd5b80820281158282048414176117bf576117bf61177f565b5f82611832577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118675761186761177f565b5060010190565b63ffffffff81811683821601908082111561188b5761188b61177f565b5092915050565b5f80858511156118a0575f80fd5b838611156118ac575f80fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156118f95780818660020360031b1b83161692505b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156118f95760109490940360031b84901b1690921692915050565b803560208310156117bf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156118f95760049490940360031b84901b169092169291505056fea2646970667358221220ca9d45c801b5ccbb302dcb12078bab5268980f6f82de99fc1d137bac6c0848e664736f6c63430008160033","sourceMap":"717:9671:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:203;;;;;;;;;;-1:-1:-1;1218:203:81;;;;;:::i;:::-;;:::i;:::-;;3323:1237;;;;;;;;;;-1:-1:-1;3323:1237:81;;;;;:::i;:::-;;:::i;:::-;;;1906:25:141;;;1894:2;1879:18;3323:1237:81;;;;;;;;2090:1227;;;;;;;;;;-1:-1:-1;2090:1227:81;;;;;:::i;:::-;;:::i;10198:99::-;;;;;;;;;;-1:-1:-1;10198:99:81;;;10285:1;2787:50:141;;;2868:2;2853:18;;2846:45;2760:18;10198:99:81;2619:278:141;1509:242:81;;;;;;;;;;-1:-1:-1;1509:242:81;;;;;:::i;:::-;;:::i;1757:249::-;;;;;;;;;;-1:-1:-1;1757:249:81;;;;;:::i;:::-;;:::i;2293:101:116:-;;;;;;;;;;;;;:::i;1638:85::-;;;;;;;;;;-1:-1:-1;1684:7:116;1710:6;1638:85;;1710:6;;;;3048:74:141;;3036:2;3021:18;1638:85:116;2902:226:141;2543:215:116;;;;;;;;;;-1:-1:-1;2543:215:116;;;;;:::i;:::-;;:::i;1218:203:81:-;1531:13:116;:11;:13::i;:::-;1370:44:81::1;1393:6;1401:3;1406:7;1370:22;:44::i;:::-;1218:203:::0;;;:::o;3323:1237::-;3491:11;3518:27;;;;:10;:27;:::i;:::-;:32;;3549:1;3518:32;3514:81;;3559:36;;;;;3787:10:141;3584::81;3775:23:141;3559:36:81;;;3757:42:141;3730:18;;3559:36:81;;;;;;;;3514:81;3607:18;;;3668:227;3704:4;3607:18;3761:27;;;;:10;:27;:::i;:::-;3802;;;;;;;;:::i;:::-;3843:20;;;;;;;;:::i;:::-;3877:8;;3668:22;:227::i;:::-;3606:289;;-1:-1:-1;3606:289:81;-1:-1:-1;3606:289:81;-1:-1:-1;3920:19:81;;;;4083:17;;;;:7;:17;:::i;:::-;4063:91;;;;;;4119:10;4459:15:141;;4063:91:81;;;4441:34:141;4511:15;;4491:18;;;4484:43;4543:18;;;4536:34;;;4063:55:81;;;;;;;;4385:18:141;;4063:91:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3906:248;;-1:-1:-1;3906:248:81;;-1:-1:-1;3906:248:81;-1:-1:-1;3906:248:81;-1:-1:-1;4171:200:81;3906:248;4228:24;;;;;;;;:::i;:::-;4266:7;:28;;;;;;;;;;:::i;:::-;4308:10;:25;;;;;;;;;;:::i;:::-;4347:14;4171:18;:200::i;:::-;4165:206;;4388:165;4432:10;4456;4480:21;4515:7;:28;;;;;;;;;;:::i;:::-;4388:30;:165::i;:::-;4381:172;;;;:::i;:::-;;3323:1237;-1:-1:-1;;;;;;;;;;;;3323:1237:81:o;2090:1227::-;2251:11;2278:27;;;;:10;:27;:::i;:::-;:32;;2309:1;2278:32;2274:85;;2344:14;;;;;;;;:::i;:::-;2319:40;;;;;3787:10:141;3775:23;;;2319:40:81;;;3757:42:141;3730:18;;2319:40:81;3613:192:141;2274:85:81;2371:18;;2413:227;2371:18;2468:24;2477:14;;;;;;;;:::i;:::-;-1:-1:-1;10006:4:81;;9940:101;2468:24;2506:27;;;;:10;:27;:::i;:::-;2547;;;;;;;;:::i;:::-;2588:20;;;;;;;;:::i;:::-;2622:8;;2413:22;:227::i;:::-;-1:-1:-1;2370:270:81;;-1:-1:-1;2370:270:81;-1:-1:-1;2665:19:81;;;;2828:17;;;;:7;:17;:::i;:::-;2808:55;;;2864:14;;;;;;;;:::i;:::-;2808:103;;;;;;;;;;;6262:23:141;;;;2808:103:81;;;6244:42:141;2880:20:81;;;;6302:18:141;;;6295:34;6345:18;;;6338:34;;;6217:18;;2808:103:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2651:260;;-1:-1:-1;2651:260:81;;-1:-1:-1;2651:260:81;-1:-1:-1;2651:260:81;-1:-1:-1;2928:200:81;2651:260;2985:24;;;;;;;;:::i;:::-;3023:7;:28;;;;;;;;;;:::i;:::-;3065:10;:25;;;;;;;;;;:::i;2928:200::-;2922:206;;3145:165;3189:10;3213;3237:21;3272:7;:28;;;;;;;;;;:::i;3145:165::-;3138:172;;;;:::i;:::-;;2090:1227;-1:-1:-1;;;;;;;;;;;2090:1227:81:o;1509:242::-;1678:11;1707:37;1714:7;1723:10;1735:8;;1707:6;:37::i;:::-;1701:43;1509:242;-1:-1:-1;;;;;1509:242:81:o;1757:249::-;1933:11;1962:37;1969:7;1978:10;1990:8;;1962:6;:37::i;2293:101:116:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2543:215::-;1531:13;:11;:13::i;:::-;2627:22:::1;::::0;::::1;2623:91;;2672:31;::::0;::::1;::::0;;2700:1:::1;2672:31;::::0;::::1;3048:74:141::0;3021:18;;2672:31:116::1;2902:226:141::0;2623:91:116::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;1855:23;1710:6;735:10:126;1855:23:116;1851:101;;1901:40;;;;;735:10:126;1901:40:116;;;3048:74:141;3021:18;;1901:40:116;2902:226:141;896:222:47;987:22;;;983:129;;1025:19;1032:3;1037:6;1025;:19::i;983:129::-;1075:26;1081:6;1089:3;1094:6;1075:5;:26::i;4712:1001:81:-;4945:18;4965:16;4983:19;5014:36;5053:60;5075:8;;5085:7;5094:6;5102:10;5053:21;:60::i;:::-;5136:21;;5182:23;;;;5592;;;;5136:21;;-1:-1:-1;5182:23:81;-1:-1:-1;5014:99:81;;-1:-1:-1;5572:43:81;;;;;;:::i;:::-;5550:19;;;;5530:39;;;;;;:::i;:::-;:85;;;;:::i;:::-;5519:96;;5629:10;:18;;;5625:82;;;5693:3;5675:14;:8;5686:3;5675:14;:::i;:::-;5674:22;;;;:::i;:::-;5663:33;;5625:82;5004:709;4712:1001;;;;;;;;;;;:::o;8975:619::-;9164:7;;9206:9;;;;:30;;9232:4;9206:30;;;9218:11;9206:30;9183:53;-1:-1:-1;9247:25:81;9300:5;9276:20;;;;:4;:20;:::i;:::-;9275:30;;;;:::i;:::-;9247:58;-1:-1:-1;9320:20:81;;;;;:39;;-1:-1:-1;9344:15:81;;;;9320:39;9316:94;;;9382:17;-1:-1:-1;9375:24:81;;-1:-1:-1;9375:24:81;9316:94;9419:21;9497:4;9479:15;9443:51;;9457:18;9444:10;:31;;;;;;:::i;:::-;9443:51;;;;:::i;:::-;:58;;;;:::i;:::-;9419:82;;9534:17;9518:13;:33;:69;;9570:17;9518:69;;;9554:13;9518:69;9511:76;8975:619;-1:-1:-1;;;;;;;;;8975:619:81:o;9637:297::-;9806:11;9833:10;;9829:99;;9912:5;9897:11;9866:42;;9887:6;9867:26;;9877:6;9868:15;;:6;:15;;;;:::i;:::-;9867:26;;;;:::i;:::-;9866:42;;;;:::i;:::-;9865:52;;;;:::i;9829:99::-;9637:297;;;;;;:::o;2912:187:116:-;2985:16;3004:6;;;3020:17;;;;;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;438:252:47:-;506:19;;;502:58;;534:26;;;;;;;;;;;;;;502:58;571:12;589:3;:8;;606:6;589:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;570:48;;;633:7;628:55;;649:34;;;;;7249:42:141;7237:55;;649:34:47;;;7219:74:141;7309:18;;;7302:34;;;7192:18;;649:34:47;7045:297:141;696:194:47;779:19;;;775:58;;807:26;;;;;;;;;;;;;;775:58;843:40;:27;;;871:3;876:6;843:27;:40::i;5893:3076:81:-;6057:33;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6057:33:81;6125:1;6106:20;;;6102:78;;6149:20;;;;;;;;;;;;;;6102:78;6190:14;6218:20;6248:19;6277:2234;6284:24;;;6277:2234;;;6325:16;6343:21;6325:16;;6387:35;:8;;6415:6;6387:27;:35::i;:::-;6324:98;-1:-1:-1;6324:98:81;;-1:-1:-1;6324:98:81;-1:-1:-1;6324:98:81;-1:-1:-1;6324:98:81;;-1:-1:-1;6473:51:81;;;;;6469:2032;;6608:7;6604:62;;;6624:42;;;;;7519:4:141;7507:17;;6624:42:81;;;7489:36:141;7462:18;;6624:42:81;7347:184:141;6604:62:81;6685:11;6698:13;6715:45;6753:6;;6715:37;:45::i;:::-;6684:76;;;;6852:6;:19;;;;;6870:1;6862:5;:9;;;6852:19;6848:74;;;6880:42;;;;;7519:4:141;7507:17;;6880:42:81;;;7489:36:141;7462:18;;6880:42:81;7347:184:141;6848:74:81;6963:5;6941:27;;:7;:18;;:27;;;;;;;:::i;:::-;;;-1:-1:-1;6986:19:81;;;;;;:::i;:::-;;;6526:494;;6469:2032;;;7030:53;;;;;7026:1475;;7168:7;7164:62;;;7184:42;;;;;7519:4:141;7507:17;;7184:42:81;;;7489:36:141;7462:18;;7184:42:81;7347:184:141;7164:62:81;7246:24;7276:46;7315:6;;7276:38;:46::i;:::-;7245:77;;;7362:16;7340:38;;:7;:18;;:38;;;;;;;:::i;:::-;;;-1:-1:-1;7026:1475:81;;-1:-1:-1;7026:1475:81;;7403:51;;;;;7399:1102;;7536:6;7532:61;;;7551:42;;;;;7519:4:141;7507:17;;7551:42:81;;;7489:36:141;7462:18;;7551:42:81;7347:184:141;7532:61:81;7615:11;7628:13;7645:45;7683:6;;7645:37;:45::i;:::-;7612:78;;;;;7712:3;:8;;7719:1;7712:8;7708:56;;7729:35;;;;;;;;;;;;;;7708:56;7805:5;7783:27;;:7;:18;;:27;;;;;;;:::i;:::-;;;-1:-1:-1;7828:16:81;;;:23;;;;;;:16;:23;;;;;:::i;:::-;;;-1:-1:-1;7869:20:81;;;:22;;;;;;:::i;:::-;;;;;7456:450;;7399:1102;;;7916:59;;;;;7912:589;;8013:4;7995:15;;;:22;7912:589;;;8042:48;;;;;8038:463;;8115:7;8110:63;;8131:42;;;;;7519:4:141;7507:17;;8131:42:81;;;7489:36:141;7462:18;;8131:42:81;7347:184:141;8110:63:81;8193:11;8206;8219:13;8236:42;8271:6;;8236:34;:42::i;:::-;8192:86;;;;;;8318:5;8296:27;;:7;:18;;:27;;;;;;;:::i;:::-;;;-1:-1:-1;8341:19:81;;;;;;:::i;:::-;;-1:-1:-1;8378:20:81;8394:4;8378:20;;:::i;:::-;;;8092:321;;;8038:463;;;8444:42;;;;;7519:4:141;7507:17;;8444:42:81;;;7489:36:141;7462:18;;8444:42:81;7347:184:141;8038:463:81;6310:2201;;;;6277:2234;;;8524:25;;;8520:77;;8558:39;;;;;;;;1906:25:141;;;1879:18;;8558:39:81;1760:177:141;8520:77:81;8611:18;;:31;;;-1:-1:-1;8607:107:81;;;8683:18;;8651:63;;;;;;;;8087:25:141;;;;8160:34;8148:47;;8128:18;;;8121:75;8060:18;;8651:63:81;7913:289:141;8607:107:81;8728:12;8744:1;8728:17;8724:65;;8754:35;;;;;;;;;;;;;;8724:65;8803:7;:28;;;;-1:-1:-1;8814:17:81;;;;8803:28;8799:76;;;8840:35;;;;;;;;;;;;;;8799:76;8905:12;8885:7;:16;;:32;;;;;;;:::i;:::-;;;-1:-1:-1;8927:35:81;;:20;;;:35;-1:-1:-1;8927:7:81;;5893:3076;-1:-1:-1;;;;;;5893:3076:81:o;1271:160:124:-;1380:43;;;1395:14;7237:55:141;;1380:43:124;;;7219:74:141;7309:18;;;;7302:34;;;1380:43:124;;;;;;;;;;7192:18:141;;;;1380:43:124;;;;;;;;;;;;;;1353:71;;1373:5;;1353:19;:71::i;1357:742:14:-;1472:16;1490:21;1472:16;1612:1;1602:11;;1472:16;1674:22;:8;;1602:11;1674:14;:22::i;:::-;1720:1;1710:11;;;;;1660:36;-1:-1:-1;1781:21:14;:8;;1710:11;1781:13;:21::i;:::-;1768:34;-1:-1:-1;1932:1:14;1923:10;;1987:13;;;;;2023:31;1987:13;1923:10;2023:8;;:31;:::i;:::-;1357:742;;2014:40;;-1:-1:-1;2014:40:14;;-1:-1:-1;;;2068:14:14;;;;-1:-1:-1;;;1357:742:14:o;2105:309::-;2183:11;;2243:2;2225:20;;;;;:44;;-1:-1:-1;2267:2:14;2249:20;;;2225:44;2221:90;;;2278:33;;;;;;;;;;;;;;2221:90;2327:17;:7;;2342:1;2327:14;:17::i;:::-;2321:23;-1:-1:-1;2380:2:14;2362:20;;:45;;2406:1;2362:45;;;2385:18;:7;;2400:2;2385:14;:18::i;:::-;2354:53;;2105:309;;;;;:::o;2420:271::-;2499:14;;2565:2;2547:20;;2543:67;;2576:34;;;;;;;;;;;;;;2543:67;2629:17;:7;;2644:1;2629:14;:17::i;:::-;2620:26;-1:-1:-1;2667:17:14;:7;;2681:2;2667:13;:17::i;2697:371::-;2789:12;;;2863:2;2845:20;;;;;:44;;-1:-1:-1;2887:2:14;2869:20;;;2845:44;2841:90;;;2898:33;;;;;;;;;;;;;;2841:90;2949:16;:7;;2963:1;2949:13;:16::i;:::-;2941:24;-1:-1:-1;2981:17:14;:7;;2996:1;2981:14;:17::i;:::-;2975:23;-1:-1:-1;3034:2:14;3016:20;;:45;;3060:1;3016:45;;;3039:18;:7;;3054:2;3039:14;:18::i;:::-;3008:53;;2697:371;;;;;:::o;3074:380::-;3163:11;;;3244:2;3226:20;;;;;:44;;-1:-1:-1;3268:2:14;3250:20;;;3226:44;3222:87;;;3279:30;;;;;;;;;;;;;;3222:87;3325:17;:7;;3340:1;3325:14;:17::i;:::-;3319:23;-1:-1:-1;3367:17:14;:7;;3381:2;3367:13;:17::i;:::-;3352:32;-1:-1:-1;3420:2:14;3402:20;;:45;;3446:1;3402:45;;;3425:18;:7;;3440:2;3425:14;:18::i;7738:720:124:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:124;8278:8;8234:16;;-1:-1:-1;8310:15:124;;:68;;8362:11;8377:1;8362:16;;8310:68;;;8328:26;;;;:31;8310:68;8306:146;;;8401:40;;;;;3078:42:141;3066:55;;8401:40:124;;;3048:74:141;3021:18;;8401:40:124;2902:226:141;8306:146:124;7808:650;;7738:720;;:::o;229:215:44:-;306:6;371:1;362:10;;407:18;362:10;:6;407;;:18;:::i;:::-;400:26;;;:::i;:::-;393:34;;;229:215;-1:-1:-1;;;;;229:215:44:o;95:128::-;171:5;201:6;;208;201:14;;;;;;;:::i;:::-;;;;;;;;;95:128;-1:-1:-1;;;;;95:128:44:o;892:220::-;970:7;1036:2;1027:11;;1075:18;1027:11;:6;1075;;:18;:::i;:::-;1067:27;;;:::i;:::-;1059:36;;;892:220;-1:-1:-1;;;;;892:220:44:o;1570:210::-;1647:7;1713:2;1704:11;;1744:18;1704:11;:6;1744;;:18;:::i;:::-;1736:27;;;:::i;450:215::-;527:6;592:1;583:10;;628:18;583:10;:6;628;;:18;:::i;:::-;621:26;;;:::i;:::-;614:34;;;450:215;-1:-1:-1;;;;;450:215:44:o;14:196:141:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;548:158::-;610:5;655:3;646:6;641:3;637:16;633:26;630:46;;;672:1;669;662:12;630:46;-1:-1:-1;694:6:141;548:158;-1:-1:-1;548:158:141:o;711:347::-;762:8;772:6;826:3;819:4;811:6;807:17;803:27;793:55;;844:1;841;834:12;793:55;-1:-1:-1;867:20:141;;910:18;899:30;;896:50;;;942:1;939;932:12;896:50;979:4;971:6;967:17;955:29;;1031:3;1024:4;1015:6;1007;1003:19;999:30;996:39;993:59;;;1048:1;1045;1038:12;993:59;711:347;;;;;:::o;1063:692::-;1216:6;1224;1232;1240;1284:9;1275:7;1271:23;1314:3;1310:2;1306:12;1303:32;;;1331:1;1328;1321:12;1303:32;1355:2;1351;1347:11;1344:31;;;1371:1;1368;1361:12;1344:31;;1394:9;1384:19;;1422:65;1479:7;1474:2;1463:9;1459:18;1422:65;:::i;:::-;1412:75;;1538:3;1527:9;1523:19;1510:33;1566:18;1558:6;1555:30;1552:50;;;1598:1;1595;1588:12;1552:50;1637:58;1687:7;1678:6;1667:9;1663:22;1637:58;:::i;:::-;1063:692;;;;-1:-1:-1;1714:8:141;-1:-1:-1;;;;1063:692:141:o;1942:672::-;2088:6;2096;2104;2112;2165:3;2153:9;2144:7;2140:23;2136:33;2133:53;;;2182:1;2179;2172:12;2133:53;2205:56;2253:7;2242:9;2205:56;:::i;:::-;2195:66;;2280;2338:7;2332:3;2321:9;2317:19;2280:66;:::i;:::-;2270:76;;2397:3;2386:9;2382:19;2369:33;2425:18;2417:6;2414:30;2411:50;;;2457:1;2454;2447:12;3133:186;3192:6;3245:2;3233:9;3224:7;3220:23;3216:32;3213:52;;;3261:1;3258;3251:12;3213:52;3284:29;3303:9;3284:29;:::i;:::-;3274:39;3133:186;-1:-1:-1;;;3133:186:141:o;3324:284::-;3382:6;3435:2;3423:9;3414:7;3410:23;3406:32;3403:52;;;3451:1;3448;3441:12;3403:52;3490:9;3477:23;3540:18;3533:5;3529:30;3522:5;3519:41;3509:69;;3574:1;3571;3564:12;3810:146;3896:34;3889:5;3885:46;3878:5;3875:57;3865:85;;3946:1;3943;3936:12;3961:247;4020:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:52;;;4089:1;4086;4079:12;4041:52;4128:9;4115:23;4147:31;4172:5;4147:31;:::i;4581:581::-;4678:6;4686;4694;4702;4755:3;4743:9;4734:7;4730:23;4726:33;4723:53;;;4772:1;4769;4762:12;4723:53;4801:9;4795:16;4785:26;;4854:2;4843:9;4839:18;4833:25;4867:31;4892:5;4867:31;:::i;:::-;4967:2;4952:18;;4946:25;4917:5;;-1:-1:-1;4980:33:141;4946:25;4980:33;:::i;:::-;5084:2;5069:18;;5063:25;5032:7;;-1:-1:-1;5097:33:141;5063:25;5097:33;:::i;:::-;4581:581;;;;-1:-1:-1;4581:581:141;;-1:-1:-1;;4581:581:141:o;5167:272::-;5225:6;5278:2;5266:9;5257:7;5253:23;5249:32;5246:52;;;5294:1;5291;5284:12;5246:52;5333:9;5320:23;5383:6;5376:5;5372:18;5365:5;5362:29;5352:57;;5405:1;5402;5395:12;5444:184;5496:77;5493:1;5486:88;5593:4;5590:1;5583:15;5617:4;5614:1;5607:15;5633:125;5698:9;;;5719:10;;;5716:36;;;5732:18;;:::i;:::-;5633:125;;;;:::o;5763:276::-;5821:6;5874:2;5862:9;5853:7;5849:23;5845:32;5842:52;;;5890:1;5887;5880:12;5842:52;5929:9;5916:23;5979:10;5972:5;5968:22;5961:5;5958:33;5948:61;;6005:1;6002;5995:12;6383:168;6456:9;;;6487;;6504:15;;;6498:22;;6484:37;6474:71;;6525:18;;:::i;6556:274::-;6596:1;6622;6612:189;;6657:77;6654:1;6647:88;6758:4;6755:1;6748:15;6786:4;6783:1;6776:15;6612:189;-1:-1:-1;6815:9:141;;6556:274::o;7536:195::-;7575:3;7606:66;7599:5;7596:77;7593:103;;7676:18;;:::i;:::-;-1:-1:-1;7723:1:141;7712:13;;7536:195::o;7736:172::-;7803:10;7833;;;7845;;;7829:27;;7868:11;;;7865:37;;;7882:18;;:::i;:::-;7865:37;7736:172;;;;:::o;8207:331::-;8312:9;8323;8365:8;8353:10;8350:24;8347:44;;;8387:1;8384;8377:12;8347:44;8416:6;8406:8;8403:20;8400:40;;;8436:1;8433;8426:12;8400:40;-1:-1:-1;;8462:23:141;;;8507:25;;;;;-1:-1:-1;8207:331:141:o;8543:369::-;8701:66;8663:19;;8785:11;;;;8816:1;8808:10;;8805:101;;;8893:2;8887;8880:3;8877:1;8873:11;8870:1;8866:19;8862:28;8858:2;8854:37;8850:46;8841:55;;8805:101;;;8543:369;;;;:::o;8917:184::-;8969:77;8966:1;8959:88;9066:4;9063:1;9056:15;9090:4;9087:1;9080:15;9106:372;9265:66;9227:19;;9349:11;;;;9380:2;9372:11;;9369:103;;;9442:2;9438:12;;;;9435:1;9431:20;9427:29;;;9419:38;9415:47;;;;9106:372;-1:-1:-1;;9106:372:141:o;9483:315::-;9603:19;;9642:2;9634:11;;9631:161;;;9714:66;9703:2;9699:12;;;9696:1;9692:20;9688:93;9677:10