@layerzerolabs/oapp-evm
Version:
LayerZero Labs reference EVM OmniChain Application (OApp) implementation
1 lines • 94 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_endpoint","type":"address","internalType":"address"},{"name":"_simulator","type":"address","internalType":"address"},{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"buildSimulationResult","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"eids","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getConfig","inputs":[{"name":"_packets","type":"bytes[]","internalType":"bytes[]"},{"name":"_packetMsgValues","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPreCrimePeers","inputs":[],"outputs":[{"name":"","type":"tuple[]","internalType":"struct PreCrimePeer[]","components":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"preCrime","type":"bytes32","internalType":"bytes32"},{"name":"oApp","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"maxBatchSize","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"oApp","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"preCrime","inputs":[{"name":"_packets","type":"bytes[]","internalType":"bytes[]"},{"name":"_packetMsgValues","type":"uint256[]","internalType":"uint256[]"},{"name":"_simulations","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"results","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setMaxBatchSize","inputs":[{"name":"_maxBatchSize","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreCrimePeers","inputs":[{"name":"_preCrimePeers","type":"tuple[]","internalType":"struct PreCrimePeer[]","components":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"preCrime","type":"bytes32","internalType":"bytes32"},{"name":"oApp","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simulate","inputs":[{"name":"_packets","type":"bytes[]","internalType":"bytes[]"},{"name":"_packetMsgValues","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"simulator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"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":"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":"CrimeFound","inputs":[{"name":"crime","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSimulationResult","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"OnlyOffChain","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":"PacketOversize","inputs":[{"name":"max","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PacketUnsorted","inputs":[]},{"type":"error","name":"SimulationFailed","inputs":[{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SimulationResultNotFound","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"}]}],"bytecode":{"object":"0x60e060405234801562000010575f80fd5b50604051620023e7380380620023e7833981016040819052620000339162000168565b8282826001600160a01b0381166200006457604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200006f81620000fd565b506001600160a01b03808316608052811660a0819052604080516352ae287960e01b815290516352ae2879916004808201926020929091908290030181865afa158015620000bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000e59190620001af565b6001600160a01b031660c05250620001d29350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811462000163575f80fd5b919050565b5f805f606084860312156200017b575f80fd5b62000186846200014c565b925062000196602085016200014c565b9150620001a6604085016200014c565b90509250925092565b5f60208284031215620001c0575f80fd5b620001cb826200014c565b9392505050565b60805160a05160c0516121c0620002275f395f81816101de015261138401525f81816102cd015281816106b501528181610d3f01528181610ea5015261107a01525f81816112ea01526113c101526121c05ff3fe6080604052600436106100ef575f3560e01c80638da5cb5b11610087578063bf7b5d7a11610057578063bf7b5d7a146102bc578063f0cd3836146102ef578063f2fde38b1461030e578063f8bcddf61461032d575f80fd5b80638da5cb5b1461024c5780638e9e709914610268578063afea44ef1461027c578063b9a1f5e71461029b575f80fd5b806350dfa937116100c257806350dfa937146101ba57806352ae2879146101cd57806354fd4d5014610218578063715018a614610238575f80fd5b806310f9cf3a146100f35780631b0c27da146101145780632913daa014610149578063336859f514610186575b5f80fd5b3480156100fe575f80fd5b5061011261010d3660046118e2565b61034c565b005b34801561011f575f80fd5b5061013361012e366004611974565b610541565b60405161014091906119d8565b60405180910390f35b348015610154575f80fd5b505f5461016e90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610140565b348015610191575f80fd5b506101a56101a0366004611974565b6105e7565b60405163ffffffff9091168152602001610140565b6101336101c83660046119ea565b61061e565b3480156101d8575f80fd5b506102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b348015610223575f80fd5b5060408051600281525f602082015201610140565b348015610243575f80fd5b5061011261069e565b348015610257575f80fd5b505f546001600160a01b0316610200565b348015610273575f80fd5b506101336106b1565b348015610287575f80fd5b50610112610296366004611a64565b610759565b3480156102a6575f80fd5b506102af61078d565b6040516101409190611a7f565b3480156102c7575f80fd5b506102007f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fa575f80fd5b506101336103093660046119ea565b61080a565b348015610319575f80fd5b50610112610328366004611add565b610a07565b348015610338575f80fd5b50610112610347366004611b03565b610a49565b3361dead1461036e57604051634e5ff03360e11b815260040160405180910390fd5b5f6103ac87878787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610ab692505050565b90505f826001600160401b038111156103c7576103c7611b71565b6040519080825280602002602001820160405280156103f0578160200160208202803683370190505b5090505f836001600160401b0381111561040c5761040c611b71565b60405190808252806020026020018201604052801561043f57816020015b606081526020019060019003908161042a5790505b5090505f5b8481101561052057365f87878481811061046057610460611b85565b90506020028101906104729190611b99565b909250905061048460045f8385611bdb565b61048d91611c02565b60e01c8584815181106104a2576104a2611b85565b63ffffffff909216602092830291909101909101526104c48160048185611bdb565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508651879250869150811061050b5761050b611b85565b60209081029190910101525050600101610444565b5061052b8383610bb4565b610536838383610c65565b505050505050505050565b60038181548110610550575f80fd5b905f5260205f20015f91509050805461056890611c32565b80601f016020809104026020016040519081016040528092919081815260200182805461059490611c32565b80156105df5780601f106105b6576101008083540402835291602001916105df565b820191905f5260205f20905b8154815290600101906020018083116105c257829003601f168201915b505050505081565b600281815481106105f6575f80fd5b905f5260205f209060089182820401919006600402915054906101000a900463ffffffff1681565b60603361dead1461064257604051634e5ff03360e11b815260040160405180910390fd5b5f61068086868686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610ab692505050565b905061068b81610c92565b61069481610e9f565b9695505050505050565b6106a6610fa9565b6106af5f610fd5565b565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107339190611c6a565b60405160200161074591815260200190565b604051602081830303815290604052905090565b610761610fa9565b5f80546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015610801575f8481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016107b0565b50505050905090565b60603361dead1461082e57604051634e5ff03360e11b815260040160405180910390fd5b5f8054604051600160f11b6020820152600160a01b90910460c01b6001600160c01b0319166022820152602a0160408051601f1981840301815291905290505f85156108be576108b96108b488888888808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610ab692505050565b611024565b610935565b6001805480602002602001604051908101604052809291908181526020015f905b82821015610930575f8481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108df565b505050505b8051909150156109fd5780516040516109549084908390602001611c81565b60405160208183030381529060405292505f5b8161ffff168110156109fa578383828151811061098657610986611b85565b60200260200101515f01518483815181106109a3576109a3611b85565b6020026020010151602001518584815181106109c1576109c1611b85565b6020026020010151604001516040516020016109e09493929190611cb2565b60408051601f198184030181529190529350600101610967565b50505b5095945050505050565b610a0f610fa9565b6001600160a01b038116610a3d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4681610fd5565b50565b610a51610fa9565b610a5c60015f61169c565b5f5b81811015610ab1576001838383818110610a7a57610a7a611b85565b83546001810185555f9485526020909420606090910292909201926003029091019050610aa78282611d01565b5050600101610a5e565b505050565b6060826001600160401b03811115610ad057610ad0611b71565b604051908082528060200260200182016040528015610b0957816020015b610af66116ba565b815260200190600190039081610aee5790505b5090505f5b83811015610bac57365f868684818110610b2a57610b2a611b85565b9050602002810190610b3c9190611b99565b91509150610b4a82826111c0565b848481518110610b5c57610b5c611b85565b6020026020010181905250848381518110610b7957610b79611b85565b6020026020010151848481518110610b9357610b93611b85565b6020908102919091010151608001525050600101610b0e565b509392505050565b815115610c2c575f610bc583611024565b90505f5b8151811015610c29575f828281518110610be557610be5611b85565b60200260200101515f01519050610bfc8482611292565b610c205760405162cc979560e11b815263ffffffff82166004820152602401610a34565b50600101610bc9565b50505b5f610c356112e7565b9050610c418282611292565b610ab15760405162cc979560e11b815263ffffffff82166004820152602401610a34565b8151610c78906002906020850190611716565b508051610c8c9060039060208401906117c2565b50505050565b5f548151600160a01b9091046001600160401b03161015610ce1575f548151604051639db0860560e01b8152600160a01b9092046001600160401b031660048301526024820152604401610a34565b805115610a46575f8080805b8451811015610e98575f858281518110610d0957610d09611b85565b60209081029190910181015180518051920151604051635a0dfe4d60e01b815263ffffffff9093166004840152602483015291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635a0dfe4d90604401602060405180830381865afa158015610d8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db09190611d38565b610dba5750610e90565b80515163ffffffff80871691161080610dec575080515163ffffffff8681169116148015610dec575080516020015184115b15610e0a576040516350823c8560e01b815260040160405180910390fd5b80515163ffffffff8681169116141580610e2957508051602001518414155b15610e4a57805180516020909101519095509350610e47858561136d565b92505b610e5383611d6b565b9250826001600160401b0316815f0151604001516001600160401b031614610e8e576040516350823c8560e01b815260040160405180910390fd5b505b600101610ced565b5050505050565b60605f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163463bd815db060e01b86604051602401610ee79190611d90565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f259190611eb6565b5f6040518083038185875af1925050503d805f8114610f5f576040519150601f19603f3d011682016040523d82523d5f602084013e610f64565b606091505b50915091505f610f748383611433565b9050610f7e6112e7565b81604051602001610f90929190611ed1565b6040516020818303038152906040529350505050919050565b5f546001600160a01b031633146106af5760405163118cdaa760e01b8152336004820152602401610a34565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f5b8251811015611178575f83828151811061104457611044611b85565b60209081029190910181015180518051920151604051635a0dfe4d60e01b815263ffffffff9093166004840152602483015291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635a0dfe4d90604401602060405180830381865afa1580156110c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110eb9190611d38565b1561116f576001805480602002602001604051908101604052809291908181526020015f905b82821015611162575f8481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611111565b5050505092505050919050565b50600101611028565b50604080515f80825260208201909252906111b9565b604080516060810182525f80825260208083018290529282015282525f1990920191018161118e5790505b5092915050565b6111c86116ba565b60405180606001604052806111dd85856114db565b63ffffffff1681526020016111f285856114fd565b81526020016112018585611515565b6001600160401b0316905281526112188383611537565b63ffffffff16602082015261122d8383611546565b6001600160a01b031660408201526112458383611557565b60608201526112548383611566565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505060c082015292915050565b5f805b83518110156112dc578263ffffffff168482815181106112b7576112b7611b85565b602002602001015163ffffffff16036112d45760019150506112e1565b600101611295565b505f90505b92915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113689190611f02565b905090565b60405163283750ff60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611408573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142c9190611f1d565b9392505050565b60608215611470576040516330a65ec560e11b81526020600482015260096024820152681b9bc81c995d995c9d60ba1b6044820152606401610a34565b638351eea760e01b61148183611f38565b6001600160e01b031916146114ab57816040516330a65ec560e11b8152600401610a3491906119d8565b6114c560048084516114bd9190611f6f565b849190611581565b90508080602001905181019061142c9190611f82565b5f6114ea600d60098486611bdb565b6114f391611c02565b60e01c9392505050565b5f61150c602d600d8486611bdb565b61142c91612029565b5f611524600960018486611bdb565b61152d91612046565b60c01c9392505050565b5f6114ea6031602d8486611bdb565b5f61142c611554848461168d565b90565b5f61150c607160518486611bdb565b365f6115758360718187611bdb565b915091505b9250929050565b60608161158f81601f612074565b10156115ce5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a34565b6115d88284612074565b8451101561161c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a34565b60608215801561163a5760405191505f825260208201604052611684565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561167357805183526020928301920161165b565b5050858452601f01601f1916604052505b50949350505050565b5f61150c605160318486611bdb565b5080545f8255600302905f5260205f2090810190610a469190611812565b60408051610160810182525f61010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915290565b828054828255905f5260205f20906007016008900481019282156117b2579160200282015f5b8382111561178057835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261173c565b80156117b05782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611780565b505b506117be92915061183b565b5090565b828054828255905f5260205f20908101928215611806579160200282015b8281111561180657825182906117f690826120cb565b50916020019190600101906117e0565b506117be92915061184f565b5b808211156117be57805463ffffffff191681555f600182018190556002820155600301611813565b5b808211156117be575f815560010161183c565b808211156117be575f611862828261186b565b5060010161184f565b50805461187790611c32565b5f825580601f10611886575050565b601f0160209004905f5260205f2090810190610a46919061183b565b5f8083601f8401126118b2575f80fd5b5081356001600160401b038111156118c8575f80fd5b6020830191508360208260051b850101111561157a575f80fd5b5f805f805f80606087890312156118f7575f80fd5b86356001600160401b038082111561190d575f80fd5b6119198a838b016118a2565b90985096506020890135915080821115611931575f80fd5b61193d8a838b016118a2565b90965094506040890135915080821115611955575f80fd5b5061196289828a016118a2565b979a9699509497509295939492505050565b5f60208284031215611984575f80fd5b5035919050565b5f5b838110156119a557818101518382015260200161198d565b50505f910152565b5f81518084526119c481602086016020860161198b565b601f01601f19169290920160200192915050565b602081525f61142c60208301846119ad565b5f805f80604085870312156119fd575f80fd5b84356001600160401b0380821115611a13575f80fd5b611a1f888389016118a2565b90965094506020870135915080821115611a37575f80fd5b50611a44878288016118a2565b95989497509550505050565b6001600160401b0381168114610a46575f80fd5b5f60208284031215611a74575f80fd5b813561142c81611a50565b602080825282518282018190525f919060409081850190868401855b82811015611ad0578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101611a9b565b5091979650505050505050565b5f60208284031215611aed575f80fd5b81356001600160a01b038116811461142c575f80fd5b5f8060208385031215611b14575f80fd5b82356001600160401b0380821115611b2a575f80fd5b818501915085601f830112611b3d575f80fd5b813581811115611b4b575f80fd5b866020606083028501011115611b5f575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e19843603018112611bae575f80fd5b8301803591506001600160401b03821115611bc7575f80fd5b60200191503681900382131561157a575f80fd5b5f8085851115611be9575f80fd5b83861115611bf5575f80fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611c2a5780818660040360031b1b83161692505b505092915050565b600181811c90821680611c4657607f821691505b602082108103611c6457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611c7a575f80fd5b5051919050565b5f8351611c9281846020880161198b565b60f09390931b6001600160f01b0319169190920190815260020192915050565b5f8551611cc3818460208a0161198b565b60e09590951b6001600160e01b031916919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610a46575f80fd5b8135611d0c81611cf0565b63ffffffff811663ffffffff198354161782555060208201356001820155604082013560028201555050565b5f60208284031215611d48575f80fd5b8151801515811461142c575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f6001600160401b03808316818103611d8657611d86611d57565b6001019392505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611ea857888303603f1901855281518051805163ffffffff168552602080820151908601526040908101516001600160401b031690850152610140888201516060611e0d8188018363ffffffff169052565b8984015191506080611e29818901846001600160a01b03169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e090611e60828901846001600160a01b03169052565b84015161010088018490529150611e79878401836119ad565b930151868403610120880152929150611e94905081836119ad565b968901969450505090860190600101611db7565b509098975050505050505050565b5f8251611ec781846020870161198b565b9190910192915050565b63ffffffff60e01b8360e01b1681525f8251611ef481600485016020870161198b565b919091016004019392505050565b5f60208284031215611f12575f80fd5b815161142c81611cf0565b5f60208284031215611f2d575f80fd5b815161142c81611a50565b805160208201516001600160e01b03198082169291906004831015611f675780818460040360031b1b83161693505b505050919050565b818103818111156112e1576112e1611d57565b5f60208284031215611f92575f80fd5b81516001600160401b0380821115611fa8575f80fd5b818401915084601f830112611fbb575f80fd5b815181811115611fcd57611fcd611b71565b604051601f8201601f19908116603f01168101908382118183101715611ff557611ff5611b71565b8160405282815287602084870101111561200d575f80fd5b61201e83602083016020880161198b565b979650505050505050565b803560208310156112e1575f19602084900360031b1b1692915050565b6001600160c01b03198135818116916008851015611c2a5760089490940360031b84901b1690921692915050565b808201808211156112e1576112e1611d57565b601f821115610ab157805f5260205f20601f840160051c810160208510156120ac5750805b601f840160051c820191505b81811015610e98575f81556001016120b8565b81516001600160401b038111156120e4576120e4611b71565b6120f8816120f28454611c32565b84612087565b602080601f83116001811461212b575f84156121145750858301515b5f19600386901b1c1916600185901b178555612182565b5f85815260208120601f198616915b828110156121595788860151825594840194600190910190840161213a565b508582101561217657878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea2646970667358221220cc65066b8660867ce2b6a42f3bf9c2bd446a2598392ec782979789a0e4c4feeb64736f6c63430008160033","sourceMap":"537:1046:135:-:0;;;634:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;740:9;751:10;771:6;-1:-1:-1;;;;;1273:26:112;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:112;;1350:1;1322:31;;;725:51:137;698:18;;1322:31:112;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;1568:22:17;;;;;1600;;;;;;1639:41;;;-1:-1:-1;;;1639:41:17;;;;:39;;:41;;;;;;;;;;;;;;;1600:22;1639:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1632:48:17;;;-1:-1:-1;537:1046:135;;-1:-1:-1;;;;537:1046:135;2912:187:112;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:112;;;-1:-1:-1;;;;;;3020:17:112;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:177:137:-;93:13;;-1:-1:-1;;;;;135:31:137;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;787:208::-;857:6;910:2;898:9;889:7;885:23;881:32;878:52;;;926:1;923;916:12;878:52;949:40;979:9;949:40;:::i;:::-;939:50;787:208;-1:-1:-1;;;787:208:137:o;:::-;537:1046:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100ef575f3560e01c80638da5cb5b11610087578063bf7b5d7a11610057578063bf7b5d7a146102bc578063f0cd3836146102ef578063f2fde38b1461030e578063f8bcddf61461032d575f80fd5b80638da5cb5b1461024c5780638e9e709914610268578063afea44ef1461027c578063b9a1f5e71461029b575f80fd5b806350dfa937116100c257806350dfa937146101ba57806352ae2879146101cd57806354fd4d5014610218578063715018a614610238575f80fd5b806310f9cf3a146100f35780631b0c27da146101145780632913daa014610149578063336859f514610186575b5f80fd5b3480156100fe575f80fd5b5061011261010d3660046118e2565b61034c565b005b34801561011f575f80fd5b5061013361012e366004611974565b610541565b60405161014091906119d8565b60405180910390f35b348015610154575f80fd5b505f5461016e90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610140565b348015610191575f80fd5b506101a56101a0366004611974565b6105e7565b60405163ffffffff9091168152602001610140565b6101336101c83660046119ea565b61061e565b3480156101d8575f80fd5b506102007f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b348015610223575f80fd5b5060408051600281525f602082015201610140565b348015610243575f80fd5b5061011261069e565b348015610257575f80fd5b505f546001600160a01b0316610200565b348015610273575f80fd5b506101336106b1565b348015610287575f80fd5b50610112610296366004611a64565b610759565b3480156102a6575f80fd5b506102af61078d565b6040516101409190611a7f565b3480156102c7575f80fd5b506102007f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fa575f80fd5b506101336103093660046119ea565b61080a565b348015610319575f80fd5b50610112610328366004611add565b610a07565b348015610338575f80fd5b50610112610347366004611b03565b610a49565b3361dead1461036e57604051634e5ff03360e11b815260040160405180910390fd5b5f6103ac87878787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610ab692505050565b90505f826001600160401b038111156103c7576103c7611b71565b6040519080825280602002602001820160405280156103f0578160200160208202803683370190505b5090505f836001600160401b0381111561040c5761040c611b71565b60405190808252806020026020018201604052801561043f57816020015b606081526020019060019003908161042a5790505b5090505f5b8481101561052057365f87878481811061046057610460611b85565b90506020028101906104729190611b99565b909250905061048460045f8385611bdb565b61048d91611c02565b60e01c8584815181106104a2576104a2611b85565b63ffffffff909216602092830291909101909101526104c48160048185611bdb565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508651879250869150811061050b5761050b611b85565b60209081029190910101525050600101610444565b5061052b8383610bb4565b610536838383610c65565b505050505050505050565b60038181548110610550575f80fd5b905f5260205f20015f91509050805461056890611c32565b80601f016020809104026020016040519081016040528092919081815260200182805461059490611c32565b80156105df5780601f106105b6576101008083540402835291602001916105df565b820191905f5260205f20905b8154815290600101906020018083116105c257829003601f168201915b505050505081565b600281815481106105f6575f80fd5b905f5260205f209060089182820401919006600402915054906101000a900463ffffffff1681565b60603361dead1461064257604051634e5ff03360e11b815260040160405180910390fd5b5f61068086868686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610ab692505050565b905061068b81610c92565b61069481610e9f565b9695505050505050565b6106a6610fa9565b6106af5f610fd5565b565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107339190611c6a565b60405160200161074591815260200190565b604051602081830303815290604052905090565b610761610fa9565b5f80546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015610801575f8481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016107b0565b50505050905090565b60603361dead1461082e57604051634e5ff03360e11b815260040160405180910390fd5b5f8054604051600160f11b6020820152600160a01b90910460c01b6001600160c01b0319166022820152602a0160408051601f1981840301815291905290505f85156108be576108b96108b488888888808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610ab692505050565b611024565b610935565b6001805480602002602001604051908101604052809291908181526020015f905b82821015610930575f8481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108df565b505050505b8051909150156109fd5780516040516109549084908390602001611c81565b60405160208183030381529060405292505f5b8161ffff168110156109fa578383828151811061098657610986611b85565b60200260200101515f01518483815181106109a3576109a3611b85565b6020026020010151602001518584815181106109c1576109c1611b85565b6020026020010151604001516040516020016109e09493929190611cb2565b60408051601f198184030181529190529350600101610967565b50505b5095945050505050565b610a0f610fa9565b6001600160a01b038116610a3d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4681610fd5565b50565b610a51610fa9565b610a5c60015f61169c565b5f5b81811015610ab1576001838383818110610a7a57610a7a611b85565b83546001810185555f9485526020909420606090910292909201926003029091019050610aa78282611d01565b5050600101610a5e565b505050565b6060826001600160401b03811115610ad057610ad0611b71565b604051908082528060200260200182016040528015610b0957816020015b610af66116ba565b815260200190600190039081610aee5790505b5090505f5b83811015610bac57365f868684818110610b2a57610b2a611b85565b9050602002810190610b3c9190611b99565b91509150610b4a82826111c0565b848481518110610b5c57610b5c611b85565b6020026020010181905250848381518110610b7957610b79611b85565b6020026020010151848481518110610b9357610b93611b85565b6020908102919091010151608001525050600101610b0e565b509392505050565b815115610c2c575f610bc583611024565b90505f5b8151811015610c29575f828281518110610be557610be5611b85565b60200260200101515f01519050610bfc8482611292565b610c205760405162cc979560e11b815263ffffffff82166004820152602401610a34565b50600101610bc9565b50505b5f610c356112e7565b9050610c418282611292565b610ab15760405162cc979560e11b815263ffffffff82166004820152602401610a34565b8151610c78906002906020850190611716565b508051610c8c9060039060208401906117c2565b50505050565b5f548151600160a01b9091046001600160401b03161015610ce1575f548151604051639db0860560e01b8152600160a01b9092046001600160401b031660048301526024820152604401610a34565b805115610a46575f8080805b8451811015610e98575f858281518110610d0957610d09611b85565b60209081029190910181015180518051920151604051635a0dfe4d60e01b815263ffffffff9093166004840152602483015291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635a0dfe4d90604401602060405180830381865afa158015610d8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db09190611d38565b610dba5750610e90565b80515163ffffffff80871691161080610dec575080515163ffffffff8681169116148015610dec575080516020015184115b15610e0a576040516350823c8560e01b815260040160405180910390fd5b80515163ffffffff8681169116141580610e2957508051602001518414155b15610e4a57805180516020909101519095509350610e47858561136d565b92505b610e5383611d6b565b9250826001600160401b0316815f0151604001516001600160401b031614610e8e576040516350823c8560e01b815260040160405180910390fd5b505b600101610ced565b5050505050565b60605f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163463bd815db060e01b86604051602401610ee79190611d90565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f259190611eb6565b5f6040518083038185875af1925050503d805f8114610f5f576040519150601f19603f3d011682016040523d82523d5f602084013e610f64565b606091505b50915091505f610f748383611433565b9050610f7e6112e7565b81604051602001610f90929190611ed1565b6040516020818303038152906040529350505050919050565b5f546001600160a01b031633146106af5760405163118cdaa760e01b8152336004820152602401610a34565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f5b8251811015611178575f83828151811061104457611044611b85565b60209081029190910181015180518051920151604051635a0dfe4d60e01b815263ffffffff9093166004840152602483015291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635a0dfe4d90604401602060405180830381865afa1580156110c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110eb9190611d38565b1561116f576001805480602002602001604051908101604052809291908181526020015f905b82821015611162575f8481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611111565b5050505092505050919050565b50600101611028565b50604080515f80825260208201909252906111b9565b604080516060810182525f80825260208083018290529282015282525f1990920191018161118e5790505b5092915050565b6111c86116ba565b60405180606001604052806111dd85856114db565b63ffffffff1681526020016111f285856114fd565b81526020016112018585611515565b6001600160401b0316905281526112188383611537565b63ffffffff16602082015261122d8383611546565b6001600160a01b031660408201526112458383611557565b60608201526112548383611566565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505060c082015292915050565b5f805b83518110156112dc578263ffffffff168482815181106112b7576112b7611b85565b602002602001015163ffffffff16036112d45760019150506112e1565b600101611295565b505f90505b92915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113689190611f02565b905090565b60405163283750ff60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611408573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142c9190611f1d565b9392505050565b60608215611470576040516330a65ec560e11b81526020600482015260096024820152681b9bc81c995d995c9d60ba1b6044820152606401610a34565b638351eea760e01b61148183611f38565b6001600160e01b031916146114ab57816040516330a65ec560e11b8152600401610a3491906119d8565b6114c560048084516114bd9190611f6f565b849190611581565b90508080602001905181019061142c9190611f82565b5f6114ea600d60098486611bdb565b6114f391611c02565b60e01c9392505050565b5f61150c602d600d8486611bdb565b61142c91612029565b5f611524600960018486611bdb565b61152d91612046565b60c01c9392505050565b5f6114ea6031602d8486611bdb565b5f61142c611554848461168d565b90565b5f61150c607160518486611bdb565b365f6115758360718187611bdb565b915091505b9250929050565b60608161158f81601f612074565b10156115ce5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a34565b6115d88284612074565b8451101561161c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a34565b60608215801561163a5760405191505f825260208201604052611684565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561167357805183526020928301920161165b565b5050858452601f01601f1916604052505b50949350505050565b5f61150c605160318486611bdb565b5080545f8255600302905f5260205f2090810190610a469190611812565b60408051610160810182525f61010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915290565b828054828255905f5260205f20906007016008900481019282156117b2579160200282015f5b8382111561178057835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261173c565b80156117b05782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611780565b505b506117be92915061183b565b5090565b828054828255905f5260205f20908101928215611806579160200282015b8281111561180657825182906117f690826120cb565b50916020019190600101906117e0565b506117be92915061184f565b5b808211156117be57805463ffffffff191681555f600182018190556002820155600301611813565b5b808211156117be575f815560010161183c565b808211156117be575f611862828261186b565b5060010161184f565b50805461187790611c32565b5f825580601f10611886575050565b601f0160209004905f5260205f2090810190610a46919061183b565b5f8083601f8401126118b2575f80fd5b5081356001600160401b038111156118c8575f80fd5b6020830191508360208260051b850101111561157a575f80fd5b5f805f805f80606087890312156118f7575f80fd5b86356001600160401b038082111561190d575f80fd5b6119198a838b016118a2565b90985096506020890135915080821115611931575f80fd5b61193d8a838b016118a2565b90965094506040890135915080821115611955575f80fd5b5061196289828a016118a2565b979a9699509497509295939492505050565b5f60208284031215611984575f80fd5b5035919050565b5f5b838110156119a557818101518382015260200161198d565b50505f910152565b5f81518084526119c481602086016020860161198b565b601f01601f19169290920160200192915050565b602081525f61142c60208301846119ad565b5f805f80604085870312156119fd575f80fd5b84356001600160401b0380821115611a13575f80fd5b611a1f888389016118a2565b90965094506020870135915080821115611a37575f80fd5b50611a44878288016118a2565b95989497509550505050565b6001600160401b0381168114610a46575f80fd5b5f60208284031215611a74575f80fd5b813561142c81611a50565b602080825282518282018190525f919060409081850190868401855b82811015611ad0578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101611a9b565b5091979650505050505050565b5f60208284031215611aed575f80fd5b81356001600160a01b038116811461142c575f80fd5b5f8060208385031215611b14575f80fd5b82356001600160401b0380821115611b2a575f80fd5b818501915085601f830112611b3d575f80fd5b813581811115611b4b575f80fd5b866020606083028501011115611b5f575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e19843603018112611bae575f80fd5b8301803591506001600160401b03821115611bc7575f80fd5b60200191503681900382131561157a575f80fd5b5f8085851115611be9575f80fd5b83861115611bf5575f80fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611c2a5780818660040360031b1b83161692505b505092915050565b600181811c90821680611c4657607f821691505b602082108103611c6457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611c7a575f80fd5b5051919050565b5f8351611c9281846020880161198b565b60f09390931b6001600160f01b0319169190920190815260020192915050565b5f8551611cc3818460208a0161198b565b60e09590951b6001600160e01b031916919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610a46575f80fd5b8135611d0c81611cf0565b63ffffffff811663ffffffff198354161782555060208201356001820155604082013560028201555050565b5f60208284031215611d48575f80fd5b8151801515811461142c575f80fd5b634e487b7160e01b5f52601160045260245ffd5b5f6001600160401b03808316818103611d8657611d86611d57565b6001019392505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015611ea857888303603f1901855281518051805163ffffffff168552602080820151908601526040908101516001600160401b031690850152610140888201516060611e0d8188018363ffffffff169052565b8984015191506080611e29818901846001600160a01b03169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e090611e60828901846001600160a01b03169052565b84015161010088018490529150611e79878401836119ad565b930151868403610120880152929150611e94905081836119ad565b968901969450505090860190600101611db7565b509098975050505050505050565b5f8251611ec781846020870161198b565b9190910192915050565b63ffffffff60e01b8360e01b1681525f8251611ef481600485016020870161198b565b919091016004019392505050565b5f60208284031215611f12575f80fd5b815161142c81611cf0565b5f60208284031215611f2d575f80fd5b815161142c81611a50565b805160208201516001600160e01b03198082169291906004831015611f675780818460040360031b1b83161693505b505050919050565b818103818111156112e1576112e1611d57565b5f60208284031215611f92575f80fd5b81516001600160401b0380821115611fa8575f80fd5b818401915084601f830112611fbb575f80fd5b815181811115611fcd57611fcd611b71565b604051601f8201601f19908116603f01168101908382118183101715611ff557611ff5611b71565b8160405282815287602084870101111561200d575f80fd5b61201e83602083016020880161198b565b979650505050505050565b803560208310156112e1575f19602084900360031b1b1692915050565b6001600160c01b03198135818116916008851015611c2a5760089490940360031b84901b1690921692915050565b808201808211156112e1576112e1611d57565b601f821115610ab157805f5260205f20601f840160051c810160208510156120ac5750805b601f840160051c820191505b81811015610e98575f81556001016120b8565b81516001600160401b038111156120e4576120e4611b71565b6120f8816120f28454611c32565b84612087565b602080601f83116001811461212b575f84156121145750858301515b5f19600386901b1c1916600185901b178555612182565b5f85815260208120601f198616915b828110156121595788860151825594840194600190910190840161213a565b508582101561217657878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea2646970667358221220cc65066b8660867ce2b6a42f3bf9c2bd446a2598392ec782979789a0e4c4feeb64736f6c63430008160033","sourceMap":"537:1046:135:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:726:17;;;;;;;;;;-1:-1:-1;3404:726:17;;;;;:::i;:::-;;:::i;:::-;;605:22:135;;;;;;;;;;-1:-1:-1;605:22:135;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1054:26:17;;;;;;;;;;-1:-1:-1;1054:26:17;;;;-1:-1:-1;;;1054:26:17;;-1:-1:-1;;;;;1054:26:17;;;;;;-1:-1:-1;;;;;2628:31:137;;;2610:50;;2598:2;2583:18;1054:26:17;2466:200:137;579:20:135;;;;;;;;;;-1:-1:-1;579:20:135;;;;;:::i;:::-;;:::i;:::-;;;2944:10:137;2932:23;;;2914:42;;2902:2;2887:18;579:20:135;2770:192:137;3056:342:17;;;;;;:::i;:::-;;:::i;995:29::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4043:32:137;;;4025:51;;4013:2;3998:18;995:29:17;3879:203:137;4136:99:17;;;;;;;;;;-1:-1:-1;4136:99:17;;;4223:1;4255:50:137;;4178:12:17;4336:2:137;4321:18;;4314:45;4228:18;4136:99:17;4087:278:137;2293:101:112;;;;;;;;;;;;;:::i;1638:85::-;;;;;;;;;;-1:-1:-1;1684:7:112;1710:6;-1:-1:-1;;;;;1710:6:112;1638:85;;787:157:135;;;;;;;;;;;;;:::i;1693:111:17:-;;;;;;;;;;-1:-1:-1;1693:111:17;;;;;:::i;:::-;;:::i;2061:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;955:34::-;;;;;;;;;;;;;;;2178:792;;;;;;;;;;-1:-1:-1;2178:792:17;;;;;:::i;:::-;;:::i;2543:215:112:-;;;;;;;;;;-1:-1:-1;2543:215:112;;;;;:::i;:::-;;:::i;1810:245:17:-;;;;;;;;;;-1:-1:-1;1810:245:17;;;;;:::i;:::-;;:::i;3404:726::-;1430:10;898:6;1430:30;1426:57;;1469:14;;-1:-1:-1;;;1469:14:17;;;;;;;;;;;1426:57;3579:30:::1;3612:48;3633:8;;3643:16;;3612:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3612:20:17::1;::::0;-1:-1:-1;;;3612:48:17:i:1;:::-;3579:81:::0;-1:-1:-1;3670:20:17::1;3706:12:::0;-1:-1:-1;;;;;3693:33:17;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3693:33:17::1;-1:-1:-1::0;3670:56:17;-1:-1:-1;3736:26:17::1;3777:12:::0;-1:-1:-1;;;;;3765:32:17;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:61;;3813:9;3808:218;3828:23:::0;;::::1;3808:218;;;3872:25;;3900:12;;3913:1;3900:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3872:43:::0;;-1:-1:-1;3872:43:17;-1:-1:-1;3953:15:17::1;3966:1;3964;3872:43:::0;;3953:15:::1;:::i;:::-;3946:23;::::0;::::1;:::i;:::-;3939:31;;3929:4;3934:1;3929:7;;;;;;;;:::i;:::-;:41;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:41;4001:14:::1;:10:::0;4012:1:::1;4001:10:::0;;:14:::1;:::i;:::-;3984:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;3984:14:17;;:11;;-1:-1:-1;3996:1:17;;-1:-1:-1;3984:14:17;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:31;-1:-1:-1;;3853:3:17::1;;3808:218;;;;4035:40;4061:7;4070:4;4035:25;:40::i;:::-;4086:37;4096:7;4105:4;4111:11;4086:9;:37::i;:::-;3569:561;;;3404:726:::0;;;;;;:::o;605:22:135:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;579:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3056:342:17:-;3208:12;1430:10;898:6;1430:30;1426:57;;1469:14;;-1:-1:-1;;;1469:14:17;;;;;;;;;;;1426:57;3232:30:::1;3265:48;3286:8;;3296:16;;3265:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3265:20:17::1;::::0;-1:-1:-1;;;3265:48:17:i:1;:::-;3232:81;;3323:33;3348:7;3323:24;:33::i;:::-;3373:18;3383:7;3373:9;:18::i;:::-;3366:25:::0;3056:342;-1:-1:-1;;;;;;3056:342:17:o;2293:101:112:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;787:157:135:-;852:12;918:9;-1:-1:-1;;;;;894:40:135;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;883:54;;;;;;8749:25:137;;8737:2;8722:18;;8603:177;883:54:135;;;;;;;;;;;;;876:61;;787:157;:::o;1693:111:17:-;1531:13:112;:11;:13::i;:::-;1769:12:17::1;:28:::0;;-1:-1:-1;;;;;1769:28:17;;::::1;-1:-1:-1::0;;;1769:28:17::1;-1:-1:-1::0;;;;1769:28:17;;::::1;::::0;;;::::1;::::0;;1693:111::o;2061:::-;2112:21;2152:13;2145:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:111;:::o;2178:792::-;2314:12;1430:10;898:6;1430:30;1426:57;;1469:14;;-1:-1:-1;;;1469:14:17;;;;;;;;;;;1426:57;2338:19:::1;2393:12:::0;;2360:46:::1;::::0;-1:-1:-1;;;2360:46:17::1;::::0;::::1;8938:51:137::0;-1:-1:-1;;;2393:12:17;;::::1;9044:3:137::0;9022:16;-1:-1:-1;;;;;;9022:16:137;9005:11;;;8998:72;9086:12;;2360:46:17::1;::::0;;-1:-1:-1;;2360:46:17;;::::1;::::0;;;;;;;-1:-1:-1;2472:27:17::1;2502:20:::0;;:130:::1;;2565:67;2583:48;2604:8;;2614:16;;2583:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;2583:20:17::1;::::0;-1:-1:-1;;;2583:48:17:i:1;:::-;2565:17;:67::i;:::-;2502:130;;;2537:13;2502:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;::::1;::::0;::::1;;;;;;;;;2647:12:::0;;2472:160;;-1:-1:-1;2647:16:17;2643:297:::1;;2700:12:::0;;2736:30:::1;::::0;::::1;::::0;2753:6;;2700:12;;2736:30:::1;;;:::i;:::-;;;;;;;;;;;;;2727:39;;2786:9;2781:149;2805:4;2801:8;;:1;:8;2781:149;;;2860:6;2868:5;2874:1;2868:8;;;;;;;;:::i;:::-;;;;;;;:12;;;2882:5;2888:1;2882:8;;;;;;;;:::i;:::-;;;;;;;:17;;;2901:5;2907:1;2901:8;;;;;;;;:::i;:::-;;;;;;;:13;;;2843:72;;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;2843:72:17;;::::1;::::0;;;;;;;-1:-1:-1;2811:3:17::1;;2781:149;;;;2665:275;2643:297;-1:-1:-1::0;2957:6:17;2178:792;-1:-1:-1;;;;;2178:792:17:o;2543:215:112:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:112;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:112;;2700:1:::1;2672:31;::::0;::::1;4025:51:137::0;3998:18;;2672:31:112::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1810:245:17:-;1531:13:112;:11;:13::i;:::-;1905:20:17::1;1912:13;;1905:20;:::i;:::-;1940:9;1935:114;1955:25:::0;;::::1;1935:114;;;2001:13;2020:14;;2035:1;2020:17;;;;;;;:::i;:::-;2001:37:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;2001:37:17;;;::::1;::::0;;;2020:17:::1;::::0;;::::1;::::0;;;::::1;::::0;2001:37:::1;;::::0;;::::1;::::0;-1:-1:-1;2001:37:17::1;2020:17:::0;2001:37;::::1;:::i;:::-;-1:-1:-1::0;;1982:3:17::1;;1935:114;;;;1810:245:::0;;:::o;1931:536:20:-;2054:30;2126:8;-1:-1:-1;;;;;2106:36:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2096:46;;2157:9;2152:309;2172:19;;;2152:309;;;2212:21;;2236:8;;2245:1;2236:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2212:35;;;;2274:28;2295:6;;2274:20;:28::i;:::-;2261:7;2269:1;2261:10;;;;;;;;:::i;:::-;;;;;;:41;;;;2431:16;2448:1;2431:19;;;;;;;;:::i;:::-;;;;;;;2412:7;2420:1;2412:10;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:38;-1:-1:-1;;2193:3:20;;2152:309;;;;1931:536;;;;;:::o;4241:660:17:-;4401:15;;:19;4397:328;;4436:27;4466;4484:8;4466:17;:27::i;:::-;4436:57;;4512:9;4507:208;4531:5;:12;4527:1;:16;4507:208;;;4568:18;4589:5;4595:1;4589:8;;;;;;;;:::i;:::-;;;;;;;:12;;;4568:33;;4624:30;4635:5;4642:11;4624:10;:30::i;:::-;4619:81;;4663:37;;-1:-1:-1;;;4663:37:17;;2944:10:137;2932:23;;4663:37:17;;;2914:42:137;2887:18;;4663:37:17;2770:192:137;4619:81:17;-1:-1:-1;4545:3:17;;4507:208;;;;4422:303;4397:328;4777:15;4795:14;:12;:14::i;:::-;4777:32;;4824:27;4835:5;4842:8;4824:10;:27::i;:::-;4819:75;;4860:34;;-1:-1:-1;;;4860:34:17;;2944:10:137;2932:23;;4860:34:17;;;2914:42:137;2887:18;;4860:34:17;2770:192:137;1415:166:135;1534:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1556:18:135;;;;:7;;:18;;;;;:::i;:::-;;1415:166;;;:::o;5142:1567:17:-;5255:12;;5237:15;;-1:-1:-1;;;5255:12:17;;;-1:-1:-1;;;;;5255:12:17;-1:-1:-1;5233:88:17;;;5291:12;;5305:15;;5276:45;;-1:-1:-1;;;5276:45:17;;-1:-1:-1;;;5291:12:17;;;-1:-1:-1;;;;;5291:12:17;5276:45;;;10814:50:137;10880:18;;;10873:34;10787:18;;5276:45:17;10641:272:137;5233:88:17;5461:15;;:19;5457:1246;;5496:13;;;;5577:1116;5601:8;:15;5597:1;:19;5577:1116;;;5641:27;5671:8;5680:1;5671:11;;;;;;;;:::i;:::-;;;;;;;;;;;;5796:13;;:20;;5818;;;5755:84;;-1:-1:-1;;;5755:84:17;;11120:10:137;11108:23;;;5755:84:17;;;11090:42:137;11148:18;;;11141:34;5671:11:17;-1:-1:-1;5778:9:17;-1:-1:-1;;;;;5755:40:17;;;;11063:18:137;;5755:84:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5750:99;;5841:8;;;5750:99;5893:13;;:20;:29;;;;;;;;:98;;-1:-1:-1;5927:13:17;;:20;:30;;;;;;;:63;;;;-1:-1:-1;5961:13:17;;:20;;;:29;-1:-1:-1;5927:63:17;5868:532;;;6039:16;;-1:-1:-1;;;6039:16:17;;;;;;;;;;;5868:532;6084:13;;:20;:30;;;;;;;;;:64;;-1:-1:-1;6118:13:17;;:20;;;:30;;;6084:64;6080:320;;;6248:13;;:20;;6299;;;;;6248;;-1