@layerzerolabs/lz-evm-oapp-v2 3.0.31 → 3.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @layerzerolabs/lz-evm-oapp-v2
2
2
 
3
+ ## 3.0.32
4
+
5
+ ### Patch Changes
6
+
7
+ - ad75537: Publish new TON packages ar Dec 19
8
+ - Updated dependencies [ad75537]
9
+ - @layerzerolabs/lz-evm-v1-0.7@3.0.32
10
+ - @layerzerolabs/lz-evm-messagelib-v2@3.0.32
11
+ - @layerzerolabs/lz-evm-protocol-v2@3.0.32
12
+
3
13
  ## 3.0.31
4
14
 
5
15
  ### Patch Changes
@@ -836,8 +836,8 @@
836
836
  "type": "receive"
837
837
  }
838
838
  ],
839
- "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002d2f38038062002d2f83398101604081905262000034916200019f565b80338181818162000045816200014f565b6001600160a01b0380831660805281166200007357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b50505050505050505050806001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000119573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013f9190620001d1565b63ffffffff1660a05250620001f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620001b257600080fd5b81516001600160a01b0381168114620001ca57600080fd5b9392505050565b600060208284031215620001e457600080fd5b815163ffffffff81168114620001ca57600080fd5b60805160a051612adf620002506000396000818161021a0152610b3c015260008181610263015281816105b501528181610c1d01528181611250015281816113d00152818161162d01526117260152612adf6000f3fe6080604052600436106101615760003560e01c806382413eac116100bf578063ca5eb5e111610079578063f0a9e48111610056578063f0a9e481146104a8578063f2fde38b146104c8578063ff7bd03d146104e857005b8063ca5eb5e114610448578063e60c287c14610468578063eba1cf081461048857005b8063a798280f116100a7578063a798280f146103d7578063a7e0231f14610404578063bb0b6a531461041b57005b806382413eac1461037c5780638da5cb5b146103ac57005b8063416ecebf1161011b578063715018a6116100f8578063715018a6146102df57806373494d2e146102f45780637d25a05e1461034057005b8063416ecebf146102085780635e280f1114610251578063695a2fa8146102aa57005b806313137d651161014957806313137d65146101b357806317442b70146101c65780633400288b146101e857005b80630119024e1461016a57806306661abd1461019d57005b3661016857005b005b34801561017657600080fd5b5061018a610185366004611ce2565b610508565b6040519081526020015b60405180910390f35b3480156101a957600080fd5b5061018a60025481565b6101686101c1366004611d7e565b6105b3565b3480156101d257600080fd5b5060408051600181526002602082015201610194565b3480156101f457600080fd5b50610168610203366004611e37565b6106ad565b34801561021457600080fd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610194565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610194565b3480156102b657600080fd5b506102ca6102c53660046120d1565b6106c3565b60408051928352602083019190915201610194565b3480156102eb57600080fd5b50610168610731565b6103076103023660046120d1565b610745565b604080518251815260208084015167ffffffffffffffff1681830152928201518051928201929092529101516060820152608001610194565b34801561034c57600080fd5b5061036361035b366004611e37565b600092915050565b60405167ffffffffffffffff9091168152602001610194565b34801561038857600080fd5b5061039c61039736600461216f565b6107da565b6040519015158152602001610194565b3480156103b857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610285565b3480156103e357600080fd5b506103f76103f23660046121d6565b6107fc565b60405161019491906122a3565b34801561041057600080fd5b506101686000600255565b34801561042757600080fd5b5061018a6104363660046122bd565b60016020526000908152604090205481565b34801561045457600080fd5b506101686104633660046122d8565b610bd0565b34801561047457600080fd5b506103f76104833660046122f5565b610c7c565b34801561049457600080fd5b506103f76104a3366004612361565b610d7e565b3480156104b457600080fd5b506101686104c33660046123fb565b610ed8565b3480156104d457600080fd5b506101686104e33660046122d8565b610ef6565b3480156104f457600080fd5b5061039c610503366004612432565b610fad565b60008160090361059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c696420636f756e742061646460448201527f6974696f6e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b816002546105ad919061247d565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610624576040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152336004820152602401610596565b6020870180359061063e90610639908a6122bd565b610fe3565b146106955761065060208801886122bd565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610596565b6106a487878787878787611038565b50505050505050565b6106b5611164565b6106bf82826111e5565b5050565b60008060006106d38888886107fc565b905060006107188a8388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061123a915050565b8051602090910151909b909a5098505050505050505050565b610739611164565b6107436000611328565b565b61074d611c9a565b600061075a8787876107fc565b905060016002600082825461076f919061247d565b925050819055506107ce888286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091523481526020810191909152925033915061139d9050565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b60606000835111610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c7a52656164436f756e7465723a20656d7074792072657175657374730000006044820152606401610596565b6000835167ffffffffffffffff81111561088557610885611e73565b60405190808252806020026020018201604052801561090c57816020015b6040805160e0810182526000808252602080830182905292820181905260608083018290526080830182905260a083019190915260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108a35790505b50905060005b8451811015610a7657600085828151811061092f5761092f612490565b602002602001015190506040518060e00160405280826000015161ffff168152602001826020015163ffffffff168152602001826040015115158152602001826060015167ffffffffffffffff168152602001826080015161ffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001630119024e60e01b8360c001516040516024016109cf91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290528351849084908110610a6257610a62612490565b602090810291909101015250600101610912565b508251600360ff9091161115610b0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4c7a52656164436f756e7465723a20696e76616c696420636f6d70757465207460448201527f79706500000000000000000000000000000000000000000000000000000000006064820152608401610596565b60006040518060c00160405280856000015160ff168152602001600360ff16866000015160ff1614610b60577f0000000000000000000000000000000000000000000000000000000000000000610b63565b60005b63ffffffff168152602001856060015115158152602001856040015167ffffffffffffffff168152602001856020015161ffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681525090506000610bc58784846114aa565b979650505050505050565b610bd8611164565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610c6157600080fd5b505af1158015610c75573d6000803e3d6000fd5b5050505050565b606060208214610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000610d1a86866114d6565b90506000610d2a84860186611ce2565b9050610d38826103e86124bf565b61ffff16610d4782606461247d565b610d51919061247d565b604051602001610d6391815260200190565b60405160208183030381529060405292505050949350505050565b60606000805b83811015610e8b57848482818110610d9e57610d9e612490565b9050602002810190610db091906124e5565b9050602014610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000858583818110610e5557610e55612490565b9050602002810190610e6791906124e5565b810190610e749190611ce2565b9050610e80818461247d565b925050600101610d84565b50610e986127108261247d565b90506000610ea68787611570565b9050610eb961ffff8216620186a061254a565b610ec3908361247d565b915081604051602001610d6391815260200190565b610ee0611164565b6106bf8282610ef05760006111e5565b306111e5565b610efe611164565b73ffffffffffffffffffffffffffffffffffffffff8116610fa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610596565b610faa81611328565b50565b6000602082018035906001908390610fc590866122bd565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff8116600090815260016020526040812054806105ad576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610596565b611043602085612561565b156110d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c6964206d657373616765206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401610596565b6000805b85811015611122578681876110ea82602061247d565b926110f79392919061259c565b8101906111049190611ce2565b61110e908361247d565b915061111b60208261247d565b90506110d4565b50700100000000000000000000000000000000600254106111435760006002555b8060026000828254611155919061247d565b90915550505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610596565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016112aa89610fe3565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016112df9291906125c6565b6040805180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f91906126b9565b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6113a5611c9a565b60006113b484600001516115e8565b6020850151909150156113ce576113ce8460200151611629565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff16815260200161142b8c610fe3565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016114679291906125c6565b60806040518083038185885af1158015611485573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bc591906126d5565b606060006114b8858561174b565b9050826020015163ffffffff166000146107f45761131f81846117f3565b60008080848482816114ea576114ea612490565b919091013560f81c9150611501905060018361247d565b915060ff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84828561154e82600261247d565b9261155b9392919061259c565b6115649161273d565b60f01c95945050505050565b6000808084818561158282600261247d565b9261158f9392919061259c565b6115989161273d565b60f01c90506115a860028361247d565b915061ffff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813414611625576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610596565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190612783565b905073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106bf73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611846565b6060600060018461175c85516118e1565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f094851b8116602083015292841b83166022820152921b166024820152602601604051602081830303815290604052905060005b83518110156117eb576117e1828583815181106117d4576117d4612490565b6020026020010151611975565b91506001016117b5565b509392505050565b606082600180846000015185602001518660400151876060015188608001518960a0015160405160200161182f999897969594939291906127a0565b604051602081830303815290604052905092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526118db908590611a25565b50505050565b600061ffff821115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610596565b606060008360018460000151600161199d8760c00151516023611998919061247d565b6118e1565b6020808901516040516119b5979695949392016128f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252908501516060860151608087015160a088015160c0890151949650611a0d958795906020016129ad565b60405160208183030381529060405291505092915050565b6000611a87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b399092919063ffffffff16565b9050805160001480611aa8575080806020019051810190611aa89190612a70565b611b34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610596565b505050565b60606107f48484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051611b6d9190612a8d565b60006040518083038185875af1925050503d8060008114611baa576040519150601f19603f3d011682016040523d82523d6000602084013e611baf565b606091505b5091509150610bc58783838760608315611c51578251600003611c4a5773ffffffffffffffffffffffffffffffffffffffff85163b611c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610596565b50816107f4565b6107f48383815115611c665781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059691906122a3565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001611cdd604051806040016040528060008152602001600081525090565b905290565b600060208284031215611cf457600080fd5b5035919050565b600060608284031215611d0d57600080fd5b50919050565b60008083601f840112611d2557600080fd5b50813567ffffffffffffffff811115611d3d57600080fd5b602083019150836020828501011115611d5557600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610faa57600080fd5b600080600080600080600060e0888a031215611d9957600080fd5b611da38989611cfb565b965060608801359550608088013567ffffffffffffffff80821115611dc757600080fd5b611dd38b838c01611d13565b909750955060a08a01359150611de882611d5c565b90935060c08901359080821115611dfe57600080fd5b50611e0b8a828b01611d13565b989b979a50959850939692959293505050565b803563ffffffff81168114611e3257600080fd5b919050565b60008060408385031215611e4a57600080fd5b611e5383611e1e565b946020939093013593505050565b803561ffff81168114611e3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715611ec557611ec5611e73565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f1257611f12611e73565b604052919050565b8015158114610faa57600080fd5b67ffffffffffffffff81168114610faa57600080fd5b600082601f830112611f4f57600080fd5b8135602067ffffffffffffffff821115611f6b57611f6b611e73565b611f79818360051b01611ecb565b82815260e09283028501820192828201919087851115611f9857600080fd5b8387015b858110156120375781818a031215611fb45760008081fd5b611fbc611ea2565b611fc582611e61565b8152611fd2868301611e1e565b86820152604080830135611fe581611f1a565b90820152606082810135611ff881611f28565b908201526080612009838201611e61565b9082015260a08281013561201c81611d5c565b9082015260c082810135908201528452928401928101611f9c565b5090979650505050505050565b60006080828403121561205657600080fd5b6040516080810181811067ffffffffffffffff8211171561207957612079611e73565b604052905080823560ff8116811461209057600080fd5b815261209e60208401611e61565b602082015260408301356120b181611f28565b604082015260608301356120c481611f1a565b6060919091015292915050565b60008060008060008061010087890312156120eb57600080fd5b6120f487611e1e565b955061210260208801611e61565b9450604087013567ffffffffffffffff8082111561211f57600080fd5b61212b8a838b01611f3e565b955061213a8a60608b01612044565b945060e089013591508082111561215057600080fd5b5061215d89828a01611d13565b979a9699509497509295939492505050565b60008060008060a0858703121561218557600080fd5b61218f8686611cfb565b9350606085013567ffffffffffffffff8111156121ab57600080fd5b6121b787828801611d13565b90945092505060808501356121cb81611d5c565b939692955090935050565b600080600060c084860312156121eb57600080fd5b6121f484611e61565b9250602084013567ffffffffffffffff81111561221057600080fd5b61221c86828701611f3e565b92505061222c8560408601612044565b90509250925092565b60005b83811015612250578181015183820152602001612238565b50506000910152565b60008151808452612271816020860160208601612235565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122b66020830184612259565b9392505050565b6000602082840312156122cf57600080fd5b6122b682611e1e565b6000602082840312156122ea57600080fd5b81356122b681611d5c565b6000806000806040858703121561230b57600080fd5b843567ffffffffffffffff8082111561232357600080fd5b61232f88838901611d13565b9096509450602087013591508082111561234857600080fd5b5061235587828801611d13565b95989497509550505050565b6000806000806040858703121561237757600080fd5b843567ffffffffffffffff8082111561238f57600080fd5b61239b88838901611d13565b909650945060208701359150808211156123b457600080fd5b818701915087601f8301126123c857600080fd5b8135818111156123d757600080fd5b8860208260051b85010111156123ec57600080fd5b95989497505060200194505050565b6000806040838503121561240e57600080fd5b61241783611e1e565b9150602083013561242781611f1a565b809150509250929050565b60006060828403121561244457600080fd5b6122b68383611cfb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ad576105ad61244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61ffff8181168382160280821691908281146124dd576124dd61244e565b505092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261251a57600080fd5b83018035915067ffffffffffffffff82111561253557600080fd5b602001915036819003821315611d5557600080fd5b80820281158282048414176105ad576105ad61244e565b600082612597577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600080858511156125ac57600080fd5b838611156125b957600080fd5b5050820193919092039150565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526125fc60e0840182612259565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526126378282612259565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561267c57600080fd5b6040516040810181811067ffffffffffffffff8211171561269f5761269f611e73565b604052825181526020928301519281019290925250919050565b6000604082840312156126cb57600080fd5b6122b6838361266a565b6000608082840312156126e757600080fd5b6040516060810181811067ffffffffffffffff8211171561270a5761270a611e73565b60405282518152602083015161271f81611f28565b6020820152612731846040850161266a565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156124dd5760029490940360031b84901b1690921692915050565b60006020828403121561279557600080fd5b81516122b681611d5c565b60008a516127b2818460208f01612235565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008b60f01b166001830152808a60f81b166003830152507fffffffff000000000000000000000000000000000000000000000000000000008860e01b16600482015286151560f81b600882015261287e600982018760c01b7fffffffffffffffff000000000000000000000000000000000000000000000000169052565b6128af601182018660f01b7fffff000000000000000000000000000000000000000000000000000000000000169052565b6128e0601382018560601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169052565b6027019b9a5050505050505050505050565b60008751612904818460208c01612235565b60f89790971b7fff00000000000000000000000000000000000000000000000000000000000000169190960190815260f094851b7fffff000000000000000000000000000000000000000000000000000000000000908116600183015293851b841660038201529190931b909116600582015260e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166007820152600b0192915050565b600087516129bf818460208c01612235565b808301905087151560f81b81527fffffffffffffffff0000000000000000000000000000000000000000000000008760c01b1660018201527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660098201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b16600b8201528351612a6081601f840160208801612235565b01601f0198975050505050505050565b600060208284031215612a8257600080fd5b81516122b681611f1a565b60008251612a9f818460208701612235565b919091019291505056fea2646970667358221220467ab507135eb8171b033b244925f7c22a2f1ca21243fe6f3094e4412aace2a964736f6c63430008160033",
840
- "deployedBytecode": "0x6080604052600436106101615760003560e01c806382413eac116100bf578063ca5eb5e111610079578063f0a9e48111610056578063f0a9e481146104a8578063f2fde38b146104c8578063ff7bd03d146104e857005b8063ca5eb5e114610448578063e60c287c14610468578063eba1cf081461048857005b8063a798280f116100a7578063a798280f146103d7578063a7e0231f14610404578063bb0b6a531461041b57005b806382413eac1461037c5780638da5cb5b146103ac57005b8063416ecebf1161011b578063715018a6116100f8578063715018a6146102df57806373494d2e146102f45780637d25a05e1461034057005b8063416ecebf146102085780635e280f1114610251578063695a2fa8146102aa57005b806313137d651161014957806313137d65146101b357806317442b70146101c65780633400288b146101e857005b80630119024e1461016a57806306661abd1461019d57005b3661016857005b005b34801561017657600080fd5b5061018a610185366004611ce2565b610508565b6040519081526020015b60405180910390f35b3480156101a957600080fd5b5061018a60025481565b6101686101c1366004611d7e565b6105b3565b3480156101d257600080fd5b5060408051600181526002602082015201610194565b3480156101f457600080fd5b50610168610203366004611e37565b6106ad565b34801561021457600080fd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610194565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610194565b3480156102b657600080fd5b506102ca6102c53660046120d1565b6106c3565b60408051928352602083019190915201610194565b3480156102eb57600080fd5b50610168610731565b6103076103023660046120d1565b610745565b604080518251815260208084015167ffffffffffffffff1681830152928201518051928201929092529101516060820152608001610194565b34801561034c57600080fd5b5061036361035b366004611e37565b600092915050565b60405167ffffffffffffffff9091168152602001610194565b34801561038857600080fd5b5061039c61039736600461216f565b6107da565b6040519015158152602001610194565b3480156103b857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610285565b3480156103e357600080fd5b506103f76103f23660046121d6565b6107fc565b60405161019491906122a3565b34801561041057600080fd5b506101686000600255565b34801561042757600080fd5b5061018a6104363660046122bd565b60016020526000908152604090205481565b34801561045457600080fd5b506101686104633660046122d8565b610bd0565b34801561047457600080fd5b506103f76104833660046122f5565b610c7c565b34801561049457600080fd5b506103f76104a3366004612361565b610d7e565b3480156104b457600080fd5b506101686104c33660046123fb565b610ed8565b3480156104d457600080fd5b506101686104e33660046122d8565b610ef6565b3480156104f457600080fd5b5061039c610503366004612432565b610fad565b60008160090361059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c696420636f756e742061646460448201527f6974696f6e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b816002546105ad919061247d565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610624576040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152336004820152602401610596565b6020870180359061063e90610639908a6122bd565b610fe3565b146106955761065060208801886122bd565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610596565b6106a487878787878787611038565b50505050505050565b6106b5611164565b6106bf82826111e5565b5050565b60008060006106d38888886107fc565b905060006107188a8388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061123a915050565b8051602090910151909b909a5098505050505050505050565b610739611164565b6107436000611328565b565b61074d611c9a565b600061075a8787876107fc565b905060016002600082825461076f919061247d565b925050819055506107ce888286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091523481526020810191909152925033915061139d9050565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b60606000835111610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c7a52656164436f756e7465723a20656d7074792072657175657374730000006044820152606401610596565b6000835167ffffffffffffffff81111561088557610885611e73565b60405190808252806020026020018201604052801561090c57816020015b6040805160e0810182526000808252602080830182905292820181905260608083018290526080830182905260a083019190915260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108a35790505b50905060005b8451811015610a7657600085828151811061092f5761092f612490565b602002602001015190506040518060e00160405280826000015161ffff168152602001826020015163ffffffff168152602001826040015115158152602001826060015167ffffffffffffffff168152602001826080015161ffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001630119024e60e01b8360c001516040516024016109cf91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290528351849084908110610a6257610a62612490565b602090810291909101015250600101610912565b508251600360ff9091161115610b0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4c7a52656164436f756e7465723a20696e76616c696420636f6d70757465207460448201527f79706500000000000000000000000000000000000000000000000000000000006064820152608401610596565b60006040518060c00160405280856000015160ff168152602001600360ff16866000015160ff1614610b60577f0000000000000000000000000000000000000000000000000000000000000000610b63565b60005b63ffffffff168152602001856060015115158152602001856040015167ffffffffffffffff168152602001856020015161ffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681525090506000610bc58784846114aa565b979650505050505050565b610bd8611164565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610c6157600080fd5b505af1158015610c75573d6000803e3d6000fd5b5050505050565b606060208214610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000610d1a86866114d6565b90506000610d2a84860186611ce2565b9050610d38826103e86124bf565b61ffff16610d4782606461247d565b610d51919061247d565b604051602001610d6391815260200190565b60405160208183030381529060405292505050949350505050565b60606000805b83811015610e8b57848482818110610d9e57610d9e612490565b9050602002810190610db091906124e5565b9050602014610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000858583818110610e5557610e55612490565b9050602002810190610e6791906124e5565b810190610e749190611ce2565b9050610e80818461247d565b925050600101610d84565b50610e986127108261247d565b90506000610ea68787611570565b9050610eb961ffff8216620186a061254a565b610ec3908361247d565b915081604051602001610d6391815260200190565b610ee0611164565b6106bf8282610ef05760006111e5565b306111e5565b610efe611164565b73ffffffffffffffffffffffffffffffffffffffff8116610fa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610596565b610faa81611328565b50565b6000602082018035906001908390610fc590866122bd565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff8116600090815260016020526040812054806105ad576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610596565b611043602085612561565b156110d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c6964206d657373616765206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401610596565b6000805b85811015611122578681876110ea82602061247d565b926110f79392919061259c565b8101906111049190611ce2565b61110e908361247d565b915061111b60208261247d565b90506110d4565b50700100000000000000000000000000000000600254106111435760006002555b8060026000828254611155919061247d565b90915550505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610596565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016112aa89610fe3565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016112df9291906125c6565b6040805180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f91906126b9565b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6113a5611c9a565b60006113b484600001516115e8565b6020850151909150156113ce576113ce8460200151611629565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff16815260200161142b8c610fe3565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016114679291906125c6565b60806040518083038185885af1158015611485573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bc591906126d5565b606060006114b8858561174b565b9050826020015163ffffffff166000146107f45761131f81846117f3565b60008080848482816114ea576114ea612490565b919091013560f81c9150611501905060018361247d565b915060ff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84828561154e82600261247d565b9261155b9392919061259c565b6115649161273d565b60f01c95945050505050565b6000808084818561158282600261247d565b9261158f9392919061259c565b6115989161273d565b60f01c90506115a860028361247d565b915061ffff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813414611625576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610596565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190612783565b905073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106bf73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611846565b6060600060018461175c85516118e1565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f094851b8116602083015292841b83166022820152921b166024820152602601604051602081830303815290604052905060005b83518110156117eb576117e1828583815181106117d4576117d4612490565b6020026020010151611975565b91506001016117b5565b509392505050565b606082600180846000015185602001518660400151876060015188608001518960a0015160405160200161182f999897969594939291906127a0565b604051602081830303815290604052905092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526118db908590611a25565b50505050565b600061ffff821115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610596565b606060008360018460000151600161199d8760c00151516023611998919061247d565b6118e1565b6020808901516040516119b5979695949392016128f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252908501516060860151608087015160a088015160c0890151949650611a0d958795906020016129ad565b60405160208183030381529060405291505092915050565b6000611a87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b399092919063ffffffff16565b9050805160001480611aa8575080806020019051810190611aa89190612a70565b611b34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610596565b505050565b60606107f48484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051611b6d9190612a8d565b60006040518083038185875af1925050503d8060008114611baa576040519150601f19603f3d011682016040523d82523d6000602084013e611baf565b606091505b5091509150610bc58783838760608315611c51578251600003611c4a5773ffffffffffffffffffffffffffffffffffffffff85163b611c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610596565b50816107f4565b6107f48383815115611c665781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059691906122a3565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001611cdd604051806040016040528060008152602001600081525090565b905290565b600060208284031215611cf457600080fd5b5035919050565b600060608284031215611d0d57600080fd5b50919050565b60008083601f840112611d2557600080fd5b50813567ffffffffffffffff811115611d3d57600080fd5b602083019150836020828501011115611d5557600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610faa57600080fd5b600080600080600080600060e0888a031215611d9957600080fd5b611da38989611cfb565b965060608801359550608088013567ffffffffffffffff80821115611dc757600080fd5b611dd38b838c01611d13565b909750955060a08a01359150611de882611d5c565b90935060c08901359080821115611dfe57600080fd5b50611e0b8a828b01611d13565b989b979a50959850939692959293505050565b803563ffffffff81168114611e3257600080fd5b919050565b60008060408385031215611e4a57600080fd5b611e5383611e1e565b946020939093013593505050565b803561ffff81168114611e3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715611ec557611ec5611e73565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f1257611f12611e73565b604052919050565b8015158114610faa57600080fd5b67ffffffffffffffff81168114610faa57600080fd5b600082601f830112611f4f57600080fd5b8135602067ffffffffffffffff821115611f6b57611f6b611e73565b611f79818360051b01611ecb565b82815260e09283028501820192828201919087851115611f9857600080fd5b8387015b858110156120375781818a031215611fb45760008081fd5b611fbc611ea2565b611fc582611e61565b8152611fd2868301611e1e565b86820152604080830135611fe581611f1a565b90820152606082810135611ff881611f28565b908201526080612009838201611e61565b9082015260a08281013561201c81611d5c565b9082015260c082810135908201528452928401928101611f9c565b5090979650505050505050565b60006080828403121561205657600080fd5b6040516080810181811067ffffffffffffffff8211171561207957612079611e73565b604052905080823560ff8116811461209057600080fd5b815261209e60208401611e61565b602082015260408301356120b181611f28565b604082015260608301356120c481611f1a565b6060919091015292915050565b60008060008060008061010087890312156120eb57600080fd5b6120f487611e1e565b955061210260208801611e61565b9450604087013567ffffffffffffffff8082111561211f57600080fd5b61212b8a838b01611f3e565b955061213a8a60608b01612044565b945060e089013591508082111561215057600080fd5b5061215d89828a01611d13565b979a9699509497509295939492505050565b60008060008060a0858703121561218557600080fd5b61218f8686611cfb565b9350606085013567ffffffffffffffff8111156121ab57600080fd5b6121b787828801611d13565b90945092505060808501356121cb81611d5c565b939692955090935050565b600080600060c084860312156121eb57600080fd5b6121f484611e61565b9250602084013567ffffffffffffffff81111561221057600080fd5b61221c86828701611f3e565b92505061222c8560408601612044565b90509250925092565b60005b83811015612250578181015183820152602001612238565b50506000910152565b60008151808452612271816020860160208601612235565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122b66020830184612259565b9392505050565b6000602082840312156122cf57600080fd5b6122b682611e1e565b6000602082840312156122ea57600080fd5b81356122b681611d5c565b6000806000806040858703121561230b57600080fd5b843567ffffffffffffffff8082111561232357600080fd5b61232f88838901611d13565b9096509450602087013591508082111561234857600080fd5b5061235587828801611d13565b95989497509550505050565b6000806000806040858703121561237757600080fd5b843567ffffffffffffffff8082111561238f57600080fd5b61239b88838901611d13565b909650945060208701359150808211156123b457600080fd5b818701915087601f8301126123c857600080fd5b8135818111156123d757600080fd5b8860208260051b85010111156123ec57600080fd5b95989497505060200194505050565b6000806040838503121561240e57600080fd5b61241783611e1e565b9150602083013561242781611f1a565b809150509250929050565b60006060828403121561244457600080fd5b6122b68383611cfb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ad576105ad61244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61ffff8181168382160280821691908281146124dd576124dd61244e565b505092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261251a57600080fd5b83018035915067ffffffffffffffff82111561253557600080fd5b602001915036819003821315611d5557600080fd5b80820281158282048414176105ad576105ad61244e565b600082612597577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600080858511156125ac57600080fd5b838611156125b957600080fd5b5050820193919092039150565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526125fc60e0840182612259565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526126378282612259565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561267c57600080fd5b6040516040810181811067ffffffffffffffff8211171561269f5761269f611e73565b604052825181526020928301519281019290925250919050565b6000604082840312156126cb57600080fd5b6122b6838361266a565b6000608082840312156126e757600080fd5b6040516060810181811067ffffffffffffffff8211171561270a5761270a611e73565b60405282518152602083015161271f81611f28565b6020820152612731846040850161266a565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156124dd5760029490940360031b84901b1690921692915050565b60006020828403121561279557600080fd5b81516122b681611d5c565b60008a516127b2818460208f01612235565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008b60f01b166001830152808a60f81b166003830152507fffffffff000000000000000000000000000000000000000000000000000000008860e01b16600482015286151560f81b600882015261287e600982018760c01b7fffffffffffffffff000000000000000000000000000000000000000000000000169052565b6128af601182018660f01b7fffff000000000000000000000000000000000000000000000000000000000000169052565b6128e0601382018560601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169052565b6027019b9a5050505050505050505050565b60008751612904818460208c01612235565b60f89790971b7fff00000000000000000000000000000000000000000000000000000000000000169190960190815260f094851b7fffff000000000000000000000000000000000000000000000000000000000000908116600183015293851b841660038201529190931b909116600582015260e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166007820152600b0192915050565b600087516129bf818460208c01612235565b808301905087151560f81b81527fffffffffffffffff0000000000000000000000000000000000000000000000008760c01b1660018201527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660098201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b16600b8201528351612a6081601f840160208801612235565b01601f0198975050505050505050565b600060208284031215612a8257600080fd5b81516122b681611f1a565b60008251612a9f818460208701612235565b919091019291505056fea2646970667358221220467ab507135eb8171b033b244925f7c22a2f1ca21243fe6f3094e4412aace2a964736f6c63430008160033",
839
+ "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002d2f38038062002d2f83398101604081905262000034916200019f565b80338181818162000045816200014f565b6001600160a01b0380831660805281166200007357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b50505050505050505050806001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000119573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013f9190620001d1565b63ffffffff1660a05250620001f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620001b257600080fd5b81516001600160a01b0381168114620001ca57600080fd5b9392505050565b600060208284031215620001e457600080fd5b815163ffffffff81168114620001ca57600080fd5b60805160a051612adf620002506000396000818161021a0152610b3c015260008181610263015281816105b501528181610c1d01528181611250015281816113d00152818161162d01526117260152612adf6000f3fe6080604052600436106101615760003560e01c806382413eac116100bf578063ca5eb5e111610079578063f0a9e48111610056578063f0a9e481146104a8578063f2fde38b146104c8578063ff7bd03d146104e857005b8063ca5eb5e114610448578063e60c287c14610468578063eba1cf081461048857005b8063a798280f116100a7578063a798280f146103d7578063a7e0231f14610404578063bb0b6a531461041b57005b806382413eac1461037c5780638da5cb5b146103ac57005b8063416ecebf1161011b578063715018a6116100f8578063715018a6146102df57806373494d2e146102f45780637d25a05e1461034057005b8063416ecebf146102085780635e280f1114610251578063695a2fa8146102aa57005b806313137d651161014957806313137d65146101b357806317442b70146101c65780633400288b146101e857005b80630119024e1461016a57806306661abd1461019d57005b3661016857005b005b34801561017657600080fd5b5061018a610185366004611ce2565b610508565b6040519081526020015b60405180910390f35b3480156101a957600080fd5b5061018a60025481565b6101686101c1366004611d7e565b6105b3565b3480156101d257600080fd5b5060408051600181526002602082015201610194565b3480156101f457600080fd5b50610168610203366004611e37565b6106ad565b34801561021457600080fd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610194565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610194565b3480156102b657600080fd5b506102ca6102c53660046120d1565b6106c3565b60408051928352602083019190915201610194565b3480156102eb57600080fd5b50610168610731565b6103076103023660046120d1565b610745565b604080518251815260208084015167ffffffffffffffff1681830152928201518051928201929092529101516060820152608001610194565b34801561034c57600080fd5b5061036361035b366004611e37565b600092915050565b60405167ffffffffffffffff9091168152602001610194565b34801561038857600080fd5b5061039c61039736600461216f565b6107da565b6040519015158152602001610194565b3480156103b857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610285565b3480156103e357600080fd5b506103f76103f23660046121d6565b6107fc565b60405161019491906122a3565b34801561041057600080fd5b506101686000600255565b34801561042757600080fd5b5061018a6104363660046122bd565b60016020526000908152604090205481565b34801561045457600080fd5b506101686104633660046122d8565b610bd0565b34801561047457600080fd5b506103f76104833660046122f5565b610c7c565b34801561049457600080fd5b506103f76104a3366004612361565b610d7e565b3480156104b457600080fd5b506101686104c33660046123fb565b610ed8565b3480156104d457600080fd5b506101686104e33660046122d8565b610ef6565b3480156104f457600080fd5b5061039c610503366004612432565b610fad565b60008160090361059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c696420636f756e742061646460448201527f6974696f6e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b816002546105ad919061247d565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610624576040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152336004820152602401610596565b6020870180359061063e90610639908a6122bd565b610fe3565b146106955761065060208801886122bd565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610596565b6106a487878787878787611038565b50505050505050565b6106b5611164565b6106bf82826111e5565b5050565b60008060006106d38888886107fc565b905060006107188a8388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061123a915050565b8051602090910151909b909a5098505050505050505050565b610739611164565b6107436000611328565b565b61074d611c9a565b600061075a8787876107fc565b905060016002600082825461076f919061247d565b925050819055506107ce888286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091523481526020810191909152925033915061139d9050565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b60606000835111610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c7a52656164436f756e7465723a20656d7074792072657175657374730000006044820152606401610596565b6000835167ffffffffffffffff81111561088557610885611e73565b60405190808252806020026020018201604052801561090c57816020015b6040805160e0810182526000808252602080830182905292820181905260608083018290526080830182905260a083019190915260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108a35790505b50905060005b8451811015610a7657600085828151811061092f5761092f612490565b602002602001015190506040518060e00160405280826000015161ffff168152602001826020015163ffffffff168152602001826040015115158152602001826060015167ffffffffffffffff168152602001826080015161ffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001630119024e60e01b8360c001516040516024016109cf91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290528351849084908110610a6257610a62612490565b602090810291909101015250600101610912565b508251600360ff9091161115610b0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4c7a52656164436f756e7465723a20696e76616c696420636f6d70757465207460448201527f79706500000000000000000000000000000000000000000000000000000000006064820152608401610596565b60006040518060c00160405280856000015160ff168152602001600360ff16866000015160ff1614610b60577f0000000000000000000000000000000000000000000000000000000000000000610b63565b60005b63ffffffff168152602001856060015115158152602001856040015167ffffffffffffffff168152602001856020015161ffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681525090506000610bc58784846114aa565b979650505050505050565b610bd8611164565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610c6157600080fd5b505af1158015610c75573d6000803e3d6000fd5b5050505050565b606060208214610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000610d1a86866114d6565b90506000610d2a84860186611ce2565b9050610d38826103e86124bf565b61ffff16610d4782606461247d565b610d51919061247d565b604051602001610d6391815260200190565b60405160208183030381529060405292505050949350505050565b60606000805b83811015610e8b57848482818110610d9e57610d9e612490565b9050602002810190610db091906124e5565b9050602014610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000858583818110610e5557610e55612490565b9050602002810190610e6791906124e5565b810190610e749190611ce2565b9050610e80818461247d565b925050600101610d84565b50610e986127108261247d565b90506000610ea68787611570565b9050610eb961ffff8216620186a061254a565b610ec3908361247d565b915081604051602001610d6391815260200190565b610ee0611164565b6106bf8282610ef05760006111e5565b306111e5565b610efe611164565b73ffffffffffffffffffffffffffffffffffffffff8116610fa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610596565b610faa81611328565b50565b6000602082018035906001908390610fc590866122bd565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff8116600090815260016020526040812054806105ad576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610596565b611043602085612561565b156110d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c6964206d657373616765206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401610596565b6000805b85811015611122578681876110ea82602061247d565b926110f79392919061259c565b8101906111049190611ce2565b61110e908361247d565b915061111b60208261247d565b90506110d4565b50700100000000000000000000000000000000600254106111435760006002555b8060026000828254611155919061247d565b90915550505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610596565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016112aa89610fe3565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016112df9291906125c6565b6040805180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f91906126b9565b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6113a5611c9a565b60006113b484600001516115e8565b6020850151909150156113ce576113ce8460200151611629565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff16815260200161142b8c610fe3565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016114679291906125c6565b60806040518083038185885af1158015611485573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bc591906126d5565b606060006114b8858561174b565b9050826020015163ffffffff166000146107f45761131f81846117f3565b60008080848482816114ea576114ea612490565b919091013560f81c9150611501905060018361247d565b915060ff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84828561154e82600261247d565b9261155b9392919061259c565b6115649161273d565b60f01c95945050505050565b6000808084818561158282600261247d565b9261158f9392919061259c565b6115989161273d565b60f01c90506115a860028361247d565b915061ffff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813414611625576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610596565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190612783565b905073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106bf73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611846565b6060600060018461175c85516118e1565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f094851b8116602083015292841b83166022820152921b166024820152602601604051602081830303815290604052905060005b83518110156117eb576117e1828583815181106117d4576117d4612490565b6020026020010151611975565b91506001016117b5565b509392505050565b606082600180846000015185602001518660400151876060015188608001518960a0015160405160200161182f999897969594939291906127a0565b604051602081830303815290604052905092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526118db908590611a25565b50505050565b600061ffff821115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610596565b606060008360018460000151600161199d8760c00151516023611998919061247d565b6118e1565b6020808901516040516119b5979695949392016128f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252908501516060860151608087015160a088015160c0890151949650611a0d958795906020016129ad565b60405160208183030381529060405291505092915050565b6000611a87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b399092919063ffffffff16565b9050805160001480611aa8575080806020019051810190611aa89190612a70565b611b34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610596565b505050565b60606107f48484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051611b6d9190612a8d565b60006040518083038185875af1925050503d8060008114611baa576040519150601f19603f3d011682016040523d82523d6000602084013e611baf565b606091505b5091509150610bc58783838760608315611c51578251600003611c4a5773ffffffffffffffffffffffffffffffffffffffff85163b611c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610596565b50816107f4565b6107f48383815115611c665781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059691906122a3565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001611cdd604051806040016040528060008152602001600081525090565b905290565b600060208284031215611cf457600080fd5b5035919050565b600060608284031215611d0d57600080fd5b50919050565b60008083601f840112611d2557600080fd5b50813567ffffffffffffffff811115611d3d57600080fd5b602083019150836020828501011115611d5557600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610faa57600080fd5b600080600080600080600060e0888a031215611d9957600080fd5b611da38989611cfb565b965060608801359550608088013567ffffffffffffffff80821115611dc757600080fd5b611dd38b838c01611d13565b909750955060a08a01359150611de882611d5c565b90935060c08901359080821115611dfe57600080fd5b50611e0b8a828b01611d13565b989b979a50959850939692959293505050565b803563ffffffff81168114611e3257600080fd5b919050565b60008060408385031215611e4a57600080fd5b611e5383611e1e565b946020939093013593505050565b803561ffff81168114611e3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715611ec557611ec5611e73565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f1257611f12611e73565b604052919050565b8015158114610faa57600080fd5b67ffffffffffffffff81168114610faa57600080fd5b600082601f830112611f4f57600080fd5b8135602067ffffffffffffffff821115611f6b57611f6b611e73565b611f79818360051b01611ecb565b82815260e09283028501820192828201919087851115611f9857600080fd5b8387015b858110156120375781818a031215611fb45760008081fd5b611fbc611ea2565b611fc582611e61565b8152611fd2868301611e1e565b86820152604080830135611fe581611f1a565b90820152606082810135611ff881611f28565b908201526080612009838201611e61565b9082015260a08281013561201c81611d5c565b9082015260c082810135908201528452928401928101611f9c565b5090979650505050505050565b60006080828403121561205657600080fd5b6040516080810181811067ffffffffffffffff8211171561207957612079611e73565b604052905080823560ff8116811461209057600080fd5b815261209e60208401611e61565b602082015260408301356120b181611f28565b604082015260608301356120c481611f1a565b6060919091015292915050565b60008060008060008061010087890312156120eb57600080fd5b6120f487611e1e565b955061210260208801611e61565b9450604087013567ffffffffffffffff8082111561211f57600080fd5b61212b8a838b01611f3e565b955061213a8a60608b01612044565b945060e089013591508082111561215057600080fd5b5061215d89828a01611d13565b979a9699509497509295939492505050565b60008060008060a0858703121561218557600080fd5b61218f8686611cfb565b9350606085013567ffffffffffffffff8111156121ab57600080fd5b6121b787828801611d13565b90945092505060808501356121cb81611d5c565b939692955090935050565b600080600060c084860312156121eb57600080fd5b6121f484611e61565b9250602084013567ffffffffffffffff81111561221057600080fd5b61221c86828701611f3e565b92505061222c8560408601612044565b90509250925092565b60005b83811015612250578181015183820152602001612238565b50506000910152565b60008151808452612271816020860160208601612235565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122b66020830184612259565b9392505050565b6000602082840312156122cf57600080fd5b6122b682611e1e565b6000602082840312156122ea57600080fd5b81356122b681611d5c565b6000806000806040858703121561230b57600080fd5b843567ffffffffffffffff8082111561232357600080fd5b61232f88838901611d13565b9096509450602087013591508082111561234857600080fd5b5061235587828801611d13565b95989497509550505050565b6000806000806040858703121561237757600080fd5b843567ffffffffffffffff8082111561238f57600080fd5b61239b88838901611d13565b909650945060208701359150808211156123b457600080fd5b818701915087601f8301126123c857600080fd5b8135818111156123d757600080fd5b8860208260051b85010111156123ec57600080fd5b95989497505060200194505050565b6000806040838503121561240e57600080fd5b61241783611e1e565b9150602083013561242781611f1a565b809150509250929050565b60006060828403121561244457600080fd5b6122b68383611cfb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ad576105ad61244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61ffff8181168382160280821691908281146124dd576124dd61244e565b505092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261251a57600080fd5b83018035915067ffffffffffffffff82111561253557600080fd5b602001915036819003821315611d5557600080fd5b80820281158282048414176105ad576105ad61244e565b600082612597577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600080858511156125ac57600080fd5b838611156125b957600080fd5b5050820193919092039150565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526125fc60e0840182612259565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526126378282612259565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561267c57600080fd5b6040516040810181811067ffffffffffffffff8211171561269f5761269f611e73565b604052825181526020928301519281019290925250919050565b6000604082840312156126cb57600080fd5b6122b6838361266a565b6000608082840312156126e757600080fd5b6040516060810181811067ffffffffffffffff8211171561270a5761270a611e73565b60405282518152602083015161271f81611f28565b6020820152612731846040850161266a565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156124dd5760029490940360031b84901b1690921692915050565b60006020828403121561279557600080fd5b81516122b681611d5c565b60008a516127b2818460208f01612235565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008b60f01b166001830152808a60f81b166003830152507fffffffff000000000000000000000000000000000000000000000000000000008860e01b16600482015286151560f81b600882015261287e600982018760c01b7fffffffffffffffff000000000000000000000000000000000000000000000000169052565b6128af601182018660f01b7fffff000000000000000000000000000000000000000000000000000000000000169052565b6128e0601382018560601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169052565b6027019b9a5050505050505050505050565b60008751612904818460208c01612235565b60f89790971b7fff00000000000000000000000000000000000000000000000000000000000000169190960190815260f094851b7fffff000000000000000000000000000000000000000000000000000000000000908116600183015293851b841660038201529190931b909116600582015260e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166007820152600b0192915050565b600087516129bf818460208c01612235565b808301905087151560f81b81527fffffffffffffffff0000000000000000000000000000000000000000000000008760c01b1660018201527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660098201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b16600b8201528351612a6081601f840160208801612235565b01601f0198975050505050505050565b600060208284031215612a8257600080fd5b81516122b681611f1a565b60008251612a9f818460208701612235565b919091019291505056fea2646970667358221220268bdba149cb8fff6169471b6eff63387baa969b3f475f5b37c1c50b565acb2064736f6c63430008160033",
840
+ "deployedBytecode": "0x6080604052600436106101615760003560e01c806382413eac116100bf578063ca5eb5e111610079578063f0a9e48111610056578063f0a9e481146104a8578063f2fde38b146104c8578063ff7bd03d146104e857005b8063ca5eb5e114610448578063e60c287c14610468578063eba1cf081461048857005b8063a798280f116100a7578063a798280f146103d7578063a7e0231f14610404578063bb0b6a531461041b57005b806382413eac1461037c5780638da5cb5b146103ac57005b8063416ecebf1161011b578063715018a6116100f8578063715018a6146102df57806373494d2e146102f45780637d25a05e1461034057005b8063416ecebf146102085780635e280f1114610251578063695a2fa8146102aa57005b806313137d651161014957806313137d65146101b357806317442b70146101c65780633400288b146101e857005b80630119024e1461016a57806306661abd1461019d57005b3661016857005b005b34801561017657600080fd5b5061018a610185366004611ce2565b610508565b6040519081526020015b60405180910390f35b3480156101a957600080fd5b5061018a60025481565b6101686101c1366004611d7e565b6105b3565b3480156101d257600080fd5b5060408051600181526002602082015201610194565b3480156101f457600080fd5b50610168610203366004611e37565b6106ad565b34801561021457600080fd5b5061023c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610194565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610194565b3480156102b657600080fd5b506102ca6102c53660046120d1565b6106c3565b60408051928352602083019190915201610194565b3480156102eb57600080fd5b50610168610731565b6103076103023660046120d1565b610745565b604080518251815260208084015167ffffffffffffffff1681830152928201518051928201929092529101516060820152608001610194565b34801561034c57600080fd5b5061036361035b366004611e37565b600092915050565b60405167ffffffffffffffff9091168152602001610194565b34801561038857600080fd5b5061039c61039736600461216f565b6107da565b6040519015158152602001610194565b3480156103b857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610285565b3480156103e357600080fd5b506103f76103f23660046121d6565b6107fc565b60405161019491906122a3565b34801561041057600080fd5b506101686000600255565b34801561042757600080fd5b5061018a6104363660046122bd565b60016020526000908152604090205481565b34801561045457600080fd5b506101686104633660046122d8565b610bd0565b34801561047457600080fd5b506103f76104833660046122f5565b610c7c565b34801561049457600080fd5b506103f76104a3366004612361565b610d7e565b3480156104b457600080fd5b506101686104c33660046123fb565b610ed8565b3480156104d457600080fd5b506101686104e33660046122d8565b610ef6565b3480156104f457600080fd5b5061039c610503366004612432565b610fad565b60008160090361059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c696420636f756e742061646460448201527f6974696f6e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b816002546105ad919061247d565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610624576040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152336004820152602401610596565b6020870180359061063e90610639908a6122bd565b610fe3565b146106955761065060208801886122bd565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610596565b6106a487878787878787611038565b50505050505050565b6106b5611164565b6106bf82826111e5565b5050565b60008060006106d38888886107fc565b905060006107188a8388888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061123a915050565b8051602090910151909b909a5098505050505050505050565b610739611164565b6107436000611328565b565b61074d611c9a565b600061075a8787876107fc565b905060016002600082825461076f919061247d565b925050819055506107ce888286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091523481526020810191909152925033915061139d9050565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b60606000835111610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c7a52656164436f756e7465723a20656d7074792072657175657374730000006044820152606401610596565b6000835167ffffffffffffffff81111561088557610885611e73565b60405190808252806020026020018201604052801561090c57816020015b6040805160e0810182526000808252602080830182905292820181905260608083018290526080830182905260a083019190915260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108a35790505b50905060005b8451811015610a7657600085828151811061092f5761092f612490565b602002602001015190506040518060e00160405280826000015161ffff168152602001826020015163ffffffff168152602001826040015115158152602001826060015167ffffffffffffffff168152602001826080015161ffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001630119024e60e01b8360c001516040516024016109cf91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290528351849084908110610a6257610a62612490565b602090810291909101015250600101610912565b508251600360ff9091161115610b0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4c7a52656164436f756e7465723a20696e76616c696420636f6d70757465207460448201527f79706500000000000000000000000000000000000000000000000000000000006064820152608401610596565b60006040518060c00160405280856000015160ff168152602001600360ff16866000015160ff1614610b60577f0000000000000000000000000000000000000000000000000000000000000000610b63565b60005b63ffffffff168152602001856060015115158152602001856040015167ffffffffffffffff168152602001856020015161ffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681525090506000610bc58784846114aa565b979650505050505050565b610bd8611164565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610c6157600080fd5b505af1158015610c75573d6000803e3d6000fd5b5050505050565b606060208214610d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000610d1a86866114d6565b90506000610d2a84860186611ce2565b9050610d38826103e86124bf565b61ffff16610d4782606461247d565b610d51919061247d565b604051602001610d6391815260200190565b60405160208183030381529060405292505050949350505050565b60606000805b83811015610e8b57848482818110610d9e57610d9e612490565b9050602002810190610db091906124e5565b9050602014610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a52656164436f756e7465723a20696e76616c696420726573706f6e73652060448201527f6c656e67746800000000000000000000000000000000000000000000000000006064820152608401610596565b6000858583818110610e5557610e55612490565b9050602002810190610e6791906124e5565b810190610e749190611ce2565b9050610e80818461247d565b925050600101610d84565b50610e986127108261247d565b90506000610ea68787611570565b9050610eb961ffff8216620186a061254a565b610ec3908361247d565b915081604051602001610d6391815260200190565b610ee0611164565b6106bf8282610ef05760006111e5565b306111e5565b610efe611164565b73ffffffffffffffffffffffffffffffffffffffff8116610fa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610596565b610faa81611328565b50565b6000602082018035906001908390610fc590866122bd565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff8116600090815260016020526040812054806105ad576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610596565b611043602085612561565b156110d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c7a52656164436f756e7465723a20696e76616c6964206d657373616765206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401610596565b6000805b85811015611122578681876110ea82602061247d565b926110f79392919061259c565b8101906111049190611ce2565b61110e908361247d565b915061111b60208261247d565b90506110d4565b50700100000000000000000000000000000000600254106111435760006002555b8060026000828254611155919061247d565b90915550505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610596565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016112aa89610fe3565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016112df9291906125c6565b6040805180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f91906126b9565b95945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6113a5611c9a565b60006113b484600001516115e8565b6020850151909150156113ce576113ce8460200151611629565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff16815260200161142b8c610fe3565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016114679291906125c6565b60806040518083038185885af1158015611485573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bc591906126d5565b606060006114b8858561174b565b9050826020015163ffffffff166000146107f45761131f81846117f3565b60008080848482816114ea576114ea612490565b919091013560f81c9150611501905060018361247d565b915060ff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84828561154e82600261247d565b9261155b9392919061259c565b6115649161273d565b60f01c95945050505050565b6000808084818561158282600261247d565b9261158f9392919061259c565b6115989161273d565b60f01c90506115a860028361247d565b915061ffff8116600114611540576040517fa9146eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813414611625576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610596565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190612783565b905073ffffffffffffffffffffffffffffffffffffffff8116611709576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106bf73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611846565b6060600060018461175c85516118e1565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f094851b8116602083015292841b83166022820152921b166024820152602601604051602081830303815290604052905060005b83518110156117eb576117e1828583815181106117d4576117d4612490565b6020026020010151611975565b91506001016117b5565b509392505050565b606082600180846000015185602001518660400151876060015188608001518960a0015160405160200161182f999897969594939291906127a0565b604051602081830303815290604052905092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526118db908590611a25565b50505050565b600061ffff821115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610596565b606060008360018460000151600161199d8760c00151516023611998919061247d565b6118e1565b6020808901516040516119b5979695949392016128f2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252908501516060860151608087015160a088015160c0890151949650611a0d958795906020016129ad565b60405160208183030381529060405291505092915050565b6000611a87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b399092919063ffffffff16565b9050805160001480611aa8575080806020019051810190611aa89190612a70565b611b34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610596565b505050565b60606107f48484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051611b6d9190612a8d565b60006040518083038185875af1925050503d8060008114611baa576040519150601f19603f3d011682016040523d82523d6000602084013e611baf565b606091505b5091509150610bc58783838760608315611c51578251600003611c4a5773ffffffffffffffffffffffffffffffffffffffff85163b611c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610596565b50816107f4565b6107f48383815115611c665781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059691906122a3565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001611cdd604051806040016040528060008152602001600081525090565b905290565b600060208284031215611cf457600080fd5b5035919050565b600060608284031215611d0d57600080fd5b50919050565b60008083601f840112611d2557600080fd5b50813567ffffffffffffffff811115611d3d57600080fd5b602083019150836020828501011115611d5557600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610faa57600080fd5b600080600080600080600060e0888a031215611d9957600080fd5b611da38989611cfb565b965060608801359550608088013567ffffffffffffffff80821115611dc757600080fd5b611dd38b838c01611d13565b909750955060a08a01359150611de882611d5c565b90935060c08901359080821115611dfe57600080fd5b50611e0b8a828b01611d13565b989b979a50959850939692959293505050565b803563ffffffff81168114611e3257600080fd5b919050565b60008060408385031215611e4a57600080fd5b611e5383611e1e565b946020939093013593505050565b803561ffff81168114611e3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715611ec557611ec5611e73565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f1257611f12611e73565b604052919050565b8015158114610faa57600080fd5b67ffffffffffffffff81168114610faa57600080fd5b600082601f830112611f4f57600080fd5b8135602067ffffffffffffffff821115611f6b57611f6b611e73565b611f79818360051b01611ecb565b82815260e09283028501820192828201919087851115611f9857600080fd5b8387015b858110156120375781818a031215611fb45760008081fd5b611fbc611ea2565b611fc582611e61565b8152611fd2868301611e1e565b86820152604080830135611fe581611f1a565b90820152606082810135611ff881611f28565b908201526080612009838201611e61565b9082015260a08281013561201c81611d5c565b9082015260c082810135908201528452928401928101611f9c565b5090979650505050505050565b60006080828403121561205657600080fd5b6040516080810181811067ffffffffffffffff8211171561207957612079611e73565b604052905080823560ff8116811461209057600080fd5b815261209e60208401611e61565b602082015260408301356120b181611f28565b604082015260608301356120c481611f1a565b6060919091015292915050565b60008060008060008061010087890312156120eb57600080fd5b6120f487611e1e565b955061210260208801611e61565b9450604087013567ffffffffffffffff8082111561211f57600080fd5b61212b8a838b01611f3e565b955061213a8a60608b01612044565b945060e089013591508082111561215057600080fd5b5061215d89828a01611d13565b979a9699509497509295939492505050565b60008060008060a0858703121561218557600080fd5b61218f8686611cfb565b9350606085013567ffffffffffffffff8111156121ab57600080fd5b6121b787828801611d13565b90945092505060808501356121cb81611d5c565b939692955090935050565b600080600060c084860312156121eb57600080fd5b6121f484611e61565b9250602084013567ffffffffffffffff81111561221057600080fd5b61221c86828701611f3e565b92505061222c8560408601612044565b90509250925092565b60005b83811015612250578181015183820152602001612238565b50506000910152565b60008151808452612271816020860160208601612235565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122b66020830184612259565b9392505050565b6000602082840312156122cf57600080fd5b6122b682611e1e565b6000602082840312156122ea57600080fd5b81356122b681611d5c565b6000806000806040858703121561230b57600080fd5b843567ffffffffffffffff8082111561232357600080fd5b61232f88838901611d13565b9096509450602087013591508082111561234857600080fd5b5061235587828801611d13565b95989497509550505050565b6000806000806040858703121561237757600080fd5b843567ffffffffffffffff8082111561238f57600080fd5b61239b88838901611d13565b909650945060208701359150808211156123b457600080fd5b818701915087601f8301126123c857600080fd5b8135818111156123d757600080fd5b8860208260051b85010111156123ec57600080fd5b95989497505060200194505050565b6000806040838503121561240e57600080fd5b61241783611e1e565b9150602083013561242781611f1a565b809150509250929050565b60006060828403121561244457600080fd5b6122b68383611cfb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ad576105ad61244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61ffff8181168382160280821691908281146124dd576124dd61244e565b505092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261251a57600080fd5b83018035915067ffffffffffffffff82111561253557600080fd5b602001915036819003821315611d5557600080fd5b80820281158282048414176105ad576105ad61244e565b600082612597577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600080858511156125ac57600080fd5b838611156125b957600080fd5b5050820193919092039150565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526125fc60e0840182612259565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526126378282612259565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561267c57600080fd5b6040516040810181811067ffffffffffffffff8211171561269f5761269f611e73565b604052825181526020928301519281019290925250919050565b6000604082840312156126cb57600080fd5b6122b6838361266a565b6000608082840312156126e757600080fd5b6040516060810181811067ffffffffffffffff8211171561270a5761270a611e73565b60405282518152602083015161271f81611f28565b6020820152612731846040850161266a565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156124dd5760029490940360031b84901b1690921692915050565b60006020828403121561279557600080fd5b81516122b681611d5c565b60008a516127b2818460208f01612235565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008b60f01b166001830152808a60f81b166003830152507fffffffff000000000000000000000000000000000000000000000000000000008860e01b16600482015286151560f81b600882015261287e600982018760c01b7fffffffffffffffff000000000000000000000000000000000000000000000000169052565b6128af601182018660f01b7fffff000000000000000000000000000000000000000000000000000000000000169052565b6128e0601382018560601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169052565b6027019b9a5050505050505050505050565b60008751612904818460208c01612235565b60f89790971b7fff00000000000000000000000000000000000000000000000000000000000000169190960190815260f094851b7fffff000000000000000000000000000000000000000000000000000000000000908116600183015293851b841660038201529190931b909116600582015260e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166007820152600b0192915050565b600087516129bf818460208c01612235565b808301905087151560f81b81527fffffffffffffffff0000000000000000000000000000000000000000000000008760c01b1660018201527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660098201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b16600b8201528351612a6081601f840160208801612235565b01601f0198975050505050505050565b600060208284031215612a8257600080fd5b81516122b681611f1a565b60008251612a9f818460208701612235565b919091019291505056fea2646970667358221220268bdba149cb8fff6169471b6eff63387baa969b3f475f5b37c1c50b565acb2064736f6c63430008160033",
841
841
  "linkReferences": {},
842
842
  "deployedLinkReferences": {}
843
843
  }
@@ -918,8 +918,8 @@
918
918
  "type": "receive"
919
919
  }
920
920
  ],
921
- "bytecode": "0x60a06040523480156200001157600080fd5b5060405162003656380380620036568339810160408190526200003491620001ed565b818181818181620000453362000180565b6001600160a01b0380831660805281166200007357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b5050600580546001600160a01b0319163317905550506040805163416ecebf60e01b815290516001600160a01b038816955063416ecebf9450600480830194506020935090918290030181865afa15801562000130573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000156919062000225565b600560146101000a81548163ffffffff021916908363ffffffff1602179055505050505062000254565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001e857600080fd5b919050565b600080604083850312156200020157600080fd5b6200020c83620001d0565b91506200021c60208401620001d0565b90509250929050565b6000602082840312156200023857600080fd5b815163ffffffff811681146200024d57600080fd5b9392505050565b6080516133a7620002af600039600081816103a40152818161068901528181610adc01528181610f75015281816110ac015281816117f001528181611b4201528181611da101528181612035015261212e01526133a76000f3fe6080604052600436106101e75760003560e01c80637d25a05e1161010e578063ca5eb5e1116100a7578063d424388511610079578063f3fef3a311610061578063f3fef3a31461061a578063f851a4401461063a578063ff7bd03d1461066757005b8063d4243885146105da578063f2fde38b146105fa57005b8063ca5eb5e11461055f578063d045a0dc1461057f578063d0a1026014610592578063d22446ce146105a557005b8063b7abbb5d116100e0578063b7abbb5d146104f9578063bb0b6a531461050c578063bd815db014610539578063c95c55be1461054c57005b80637d25a05e1461044857806382413eac146104815780638da5cb5b146104a1578063b731ea0a146104cc57005b806356a4728911610180578063622f17f611610152578063622f17f6146103c6578063704b6c02146103f35780637112f86f14610413578063715018a61461043357005b806356a47289146103155780635a0dfe4d146103425780635b849af6146103725780635e280f111461039257005b80633400288b116101b95780633400288b14610264578063416ecebf1461028457806352ae2879146102ce578063542e7b561461030257005b806306661abd146101f057806313137d651461021957806317442b701461022c578063257f4e051461024e57005b366101ee57005b005b3480156101fc57600080fd5b5061020660035481565b6040519081526020015b60405180910390f35b6101ee610227366004612742565b610687565b34801561023857600080fd5b5060408051600181526002602082015201610210565b34801561025a57600080fd5b5061020660045481565b34801561027057600080fd5b506101ee61027f3660046127fb565b610786565b34801561029057600080fd5b506005546102b99074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156102da57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b6101ee61031036600461286a565b61079c565b34801561032157600080fd5b50610206610330366004612904565b60086020526000908152604090205481565b34801561034e57600080fd5b5061036261035d3660046127fb565b610963565b6040519015158152602001610210565b34801561037e57600080fd5b506101ee61038d36600461292d565b610982565b34801561039e57600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d257600080fd5b506102066103e1366004612904565b60096020526000908152604090205481565b3480156103ff57600080fd5b506101ee61040e36600461294a565b6109bb565b34801561041f57600080fd5b506101ee61042e36600461297d565b610a83565b34801561043f57600080fd5b506101ee610bbd565b34801561045457600080fd5b506104686104633660046127fb565b610bd1565b60405167ffffffffffffffff9091168152602001610210565b34801561048d57600080fd5b5061036261049c3660046129bd565b610c24565b3480156104ad57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102dd565b3480156104d857600080fd5b506002546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b6101ee610507366004612a35565b610c46565b34801561051857600080fd5b50610206610527366004612904565b60016020526000908152604090205481565b6101ee610547366004612a96565b610cc9565b6101ee61055a366004612a35565b610e80565b34801561056b57600080fd5b506101ee61057a36600461294a565b610f28565b6101ee61058d366004612742565b610fcd565b6101ee6105a0366004612ad8565b611015565b3480156105b157600080fd5b506105c56105c0366004612a35565b6112ea565b60408051928352602083019190915201610210565b3480156105e657600080fd5b506101ee6105f536600461294a565b611361565b34801561060657600080fd5b506101ee61061536600461294a565b6113e2565b34801561062657600080fd5b506101ee610635366004612b59565b611499565b34801561064657600080fd5b506005546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561067357600080fd5b50610362610682366004612b77565b6115e4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106fd576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061071790610712908a612904565b61161a565b1461076e576107296020880188612904565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106f4565b61077d8787878787878761166f565b50505050505050565b61078e6119c0565b6107988282611a41565b5050565b84811480156107aa57508483145b610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106f4565b610818612677565b3460005b8781101561095857600061083160018a612bc2565b821461083d573061083f565b335b905060008a8a8481811061085557610855612bd5565b905060200201602081019061086a9190612904565b9050600089898581811061088057610880612bd5565b90506020020160208101906108959190612c04565b905061092c826108b783600560149054906101000a900463ffffffff16611a96565b8a8a888181106108c9576108c9612bd5565b90506020028101906108db9190612c1f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611b0f9050565b955061093782611c27565b6040860151516109479086612bc2565b9450506001909201915061081c9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b61098a6119c0565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a8b6119c0565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b505060075460ff16159150610bb890505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9083612c84565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bc56119c0565b610bcf6000611c50565b565b60075460009060ff1615610c1c5763ffffffff83166000908152600660209081526040808320858452909152902054610c159067ffffffffffffffff166001612cab565b905061097c565b50600061097c565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b610cb984610c6685600560149054906101000a900463ffffffff16611a96565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611b0f9050565b50610cc384611c27565b50505050565b60005b81811015610dbb5736838383818110610ce757610ce7612bd5565b9050602002810190610cf99190612cd3565b9050610d15610d0b6020830183612904565b6020830135610963565b610d1f5750610db3565b3063d045a0dc60c08301358360a0810135610d3e610100830183612c1f565b610d4f610100890160e08a0161294a565b610d5d6101208a018a612c1f565b6040518963ffffffff1660e01b8152600401610d7f9796959493929190612d5a565b6000604051808303818588803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b5050505050505b600101610ccc565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4d9190810190612e41565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b610f2184610c6685600560149054906101000a900463ffffffff16611a96565b5050505050565b610f306119c0565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fb957600080fd5b505af1158015610f21573d6000803e3d6000fd5b333014611006576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61077d8787878787878761076e565b73ffffffffffffffffffffffffffffffffffffffff87163014611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106f4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106f4565b600061113f8686611cc5565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111895760016004600082825461117e9190612f5e565b909155506112e09050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161127e576001600460008282546111c69190612f5e565b90915550600090506111d88787611ce7565b90506111e381611c27565b600061123662030d40600061122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611d0a565b9050611276826112596001600560149054906101000a900463ffffffff16611a96565b836040518060400160405280348152602001600081525030611b0f565b5050506112e0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106f4565b5050505050505050565b600080600061134b8761130f88600560149054906101000a900463ffffffff16611a96565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d8b915050565b8051602090910151909890975095505050505050565b6113696119c0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113ea6119c0565b73ffffffffffffffffffffffffffffffffffffffff811661148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106f4565b61149681611c50565b50565b60055473ffffffffffffffffffffffffffffffffffffffff16331461151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611574576040519150601f19603f3d011682016040523d82523d6000602084013e611579565b606091505b5050905080610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106f4565b60006020820180359060019083906115fc9086612904565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061097c576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106f4565b61169961167f6020890189612904565b602089013561169460608b0160408c01612f71565b611e79565b60006116a58686611cc5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161177357600380549060006116e183612f8e565b91905055506116f08686611faf565b341015611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106f4565b61176e61176960208a018a612904565b611fce565b6112e0565b60ff811660021480611788575060ff81166004145b15611865576003805490600061179d83612f8e565b909155506117b3905061176960208a018a612904565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061182e9030908b906000908c908c90600401612fc6565b600060405180830381600087803b15801561184857600080fd5b505af115801561185c573d6000803e3d6000fd5b505050506112e0565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161127e576003805490600061189f83612f8e565b909155506118b5905061176960208a018a612904565b6118ca6118c560208a018a612904565b611c27565b600061191662030d40600a61122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119b961192860208b018b612904565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611259565b50506112e0565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f4565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611b17612677565b6000611b268460000151611fef565b602085015190915015611b4057611b408460200151612031565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b9d8c61161a565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611bd9929190613006565b60806040518083038185885af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c91906130f9565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611c4883612f8e565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611cd46001828486613161565b611cdd9161318b565b60f81c9392505050565b6000611cf7600560018486613161565b611d00916131d3565b60e01c9392505050565b6060836003611d1a826000612153565b61ffff1614611d6757611d2e816000612153565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106f4565b6000611d7385856121d3565b9050611d8186600183612273565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611dfb8961161a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611e30929190613006565b6040805180830381865afa158015611e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e709190613219565b95945050505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611f3957611ebd816001612cab565b67ffffffffffffffff168267ffffffffffffffff1614611f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106f4565b8067ffffffffffffffff168267ffffffffffffffff161115610cc35763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611fbe8260058186613161565b611fc791613235565b9392505050565b63ffffffff81166000908152600860205260408120805491611c4883612f8e565b60008134101561202d576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106f4565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c29190613271565b905073ffffffffffffffffffffffffffffffffffffffff8116612111576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079873ffffffffffffffffffffffffffffffffffffffff8216337f0000000000000000000000000000000000000000000000000000000000000000856122de565b6000612160826002612f5e565b835110156121ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106f4565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561223c57604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611fc7565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611af8565b6060836003612283826000612153565b61ffff161461229757611d2e816000612153565b8460016122a48551612373565b6122af90600161328e565b86866040516020016122c59594939291906132a9565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610cc3908590612407565b600061ffff82111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106f4565b6000612469826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125169092919063ffffffff16565b905080516000148061248a57508080602001905181019061248a9190613342565b610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106f4565b6060610c3e8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161254a919061335f565b60006040518083038185875af1925050503d8060008114612587576040519150601f19603f3d011682016040523d82523d6000602084013e61258c565b606091505b5091509150611c1c878383876060831561262e5782516000036126275773ffffffffffffffffffffffffffffffffffffffff85163b612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f4565b5081610c3e565b610c3e83838151156126435781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016126ba604051806040016040528060008152602001600081525090565b905290565b6000606082840312156126d157600080fd5b50919050565b60008083601f8401126126e957600080fd5b50813567ffffffffffffffff81111561270157600080fd5b60208301915083602082850101111561271957600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461149657600080fd5b600080600080600080600060e0888a03121561275d57600080fd5b61276789896126bf565b965060608801359550608088013567ffffffffffffffff8082111561278b57600080fd5b6127978b838c016126d7565b909750955060a08a013591506127ac82612720565b90935060c089013590808211156127c257600080fd5b506127cf8a828b016126d7565b989b979a50959850939692959293505050565b803563ffffffff811681146127f657600080fd5b919050565b6000806040838503121561280e57600080fd5b612817836127e2565b946020939093013593505050565b60008083601f84011261283757600080fd5b50813567ffffffffffffffff81111561284f57600080fd5b6020830191508360208260051b850101111561271957600080fd5b6000806000806000806060878903121561288357600080fd5b863567ffffffffffffffff8082111561289b57600080fd5b6128a78a838b01612825565b909850965060208901359150808211156128c057600080fd5b6128cc8a838b01612825565b909650945060408901359150808211156128e557600080fd5b506128f289828a01612825565b979a9699509497509295939492505050565b60006020828403121561291657600080fd5b611fc7826127e2565b801515811461149657600080fd5b60006020828403121561293f57600080fd5b8135611fc78161291f565b60006020828403121561295c57600080fd5b8135611fc781612720565b67ffffffffffffffff8116811461149657600080fd5b60008060006060848603121561299257600080fd5b61299b846127e2565b92506020840135915060408401356129b281612967565b809150509250925092565b60008060008060a085870312156129d357600080fd5b6129dd86866126bf565b9350606085013567ffffffffffffffff8111156129f957600080fd5b612a05878288016126d7565b9094509250506080850135612a1981612720565b939692955090935050565b803560ff811681146127f657600080fd5b60008060008060608587031215612a4b57600080fd5b612a54856127e2565b9350612a6260208601612a24565b9250604085013567ffffffffffffffff811115612a7e57600080fd5b612a8a878288016126d7565b95989497509550505050565b60008060208385031215612aa957600080fd5b823567ffffffffffffffff811115612ac057600080fd5b612acc85828601612825565b90969095509350505050565b600080600080600080600060a0888a031215612af357600080fd5b8735612afe81612720565b965060208801359550604088013567ffffffffffffffff80821115612b2257600080fd5b612b2e8b838c016126d7565b909750955060608a01359150612b4382612720565b909350608089013590808211156127c257600080fd5b60008060408385031215612b6c57600080fd5b823561281781612720565b600060608284031215612b8957600080fd5b611fc783836126bf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561097c5761097c612b93565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612c1657600080fd5b611fc782612a24565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c5457600080fd5b83018035915067ffffffffffffffff821115612c6f57600080fd5b60200191503681900382131561271957600080fd5b600067ffffffffffffffff808316818103612ca157612ca1612b93565b6001019392505050565b67ffffffffffffffff818116838216019080821115612ccc57612ccc612b93565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612d0757600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612d68896127e2565b1681526020880135602082015260006040890135612d8581612967565b67ffffffffffffffff811660408401525087606083015260e06080830152612db160e083018789612d11565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612de0818587612d11565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612e38578181015183820152602001612e20565b50506000910152565b600060208284031215612e5357600080fd5b815167ffffffffffffffff80821115612e6b57600080fd5b818401915084601f830112612e7f57600080fd5b815181811115612e9157612e91612dee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612ed757612ed7612dee565b81604052828152876020848701011115612ef057600080fd5b611c1c836020830160208801612e1d565b60008151808452612f19816020860160208601612e1d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc76020830184612f01565b8082018082111561097c5761097c612b93565b600060208284031215612f8357600080fd5b8135611fc781612967565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fbf57612fbf612b93565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611c1c608083018486612d11565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261303c60e0840182612f01565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526130778282612f01565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156130bc57600080fd5b6040516040810181811067ffffffffffffffff821117156130df576130df612dee565b604052825181526020928301519281019290925250919050565b60006080828403121561310b57600080fd5b6040516060810181811067ffffffffffffffff8211171561312e5761312e612dee565b60405282518152602083015161314381612967565b602082015261315584604085016130aa565b60408201529392505050565b6000808585111561317157600080fd5b8386111561317e57600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131cb5780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131cb5760049490940360031b84901b1690921692915050565b60006040828403121561322b57600080fd5b611fc783836130aa565b8035602083101561097c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561328357600080fd5b8151611fc781612720565b61ffff818116838216019080821115612ccc57612ccc612b93565b600086516132bb818460208b01612e1d565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613333816004840160208801612e1d565b01600401979650505050505050565b60006020828403121561335457600080fd5b8151611fc78161291f565b60008251612d07818460208701612e1d56fea264697066735822122071df9779a99432656fb94b662cd3eb1247cf0ed379ec189caed8ad4af4cf049f64736f6c63430008160033",
922
- "deployedBytecode": "0x6080604052600436106101e75760003560e01c80637d25a05e1161010e578063ca5eb5e1116100a7578063d424388511610079578063f3fef3a311610061578063f3fef3a31461061a578063f851a4401461063a578063ff7bd03d1461066757005b8063d4243885146105da578063f2fde38b146105fa57005b8063ca5eb5e11461055f578063d045a0dc1461057f578063d0a1026014610592578063d22446ce146105a557005b8063b7abbb5d116100e0578063b7abbb5d146104f9578063bb0b6a531461050c578063bd815db014610539578063c95c55be1461054c57005b80637d25a05e1461044857806382413eac146104815780638da5cb5b146104a1578063b731ea0a146104cc57005b806356a4728911610180578063622f17f611610152578063622f17f6146103c6578063704b6c02146103f35780637112f86f14610413578063715018a61461043357005b806356a47289146103155780635a0dfe4d146103425780635b849af6146103725780635e280f111461039257005b80633400288b116101b95780633400288b14610264578063416ecebf1461028457806352ae2879146102ce578063542e7b561461030257005b806306661abd146101f057806313137d651461021957806317442b701461022c578063257f4e051461024e57005b366101ee57005b005b3480156101fc57600080fd5b5061020660035481565b6040519081526020015b60405180910390f35b6101ee610227366004612742565b610687565b34801561023857600080fd5b5060408051600181526002602082015201610210565b34801561025a57600080fd5b5061020660045481565b34801561027057600080fd5b506101ee61027f3660046127fb565b610786565b34801561029057600080fd5b506005546102b99074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156102da57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b6101ee61031036600461286a565b61079c565b34801561032157600080fd5b50610206610330366004612904565b60086020526000908152604090205481565b34801561034e57600080fd5b5061036261035d3660046127fb565b610963565b6040519015158152602001610210565b34801561037e57600080fd5b506101ee61038d36600461292d565b610982565b34801561039e57600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d257600080fd5b506102066103e1366004612904565b60096020526000908152604090205481565b3480156103ff57600080fd5b506101ee61040e36600461294a565b6109bb565b34801561041f57600080fd5b506101ee61042e36600461297d565b610a83565b34801561043f57600080fd5b506101ee610bbd565b34801561045457600080fd5b506104686104633660046127fb565b610bd1565b60405167ffffffffffffffff9091168152602001610210565b34801561048d57600080fd5b5061036261049c3660046129bd565b610c24565b3480156104ad57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102dd565b3480156104d857600080fd5b506002546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b6101ee610507366004612a35565b610c46565b34801561051857600080fd5b50610206610527366004612904565b60016020526000908152604090205481565b6101ee610547366004612a96565b610cc9565b6101ee61055a366004612a35565b610e80565b34801561056b57600080fd5b506101ee61057a36600461294a565b610f28565b6101ee61058d366004612742565b610fcd565b6101ee6105a0366004612ad8565b611015565b3480156105b157600080fd5b506105c56105c0366004612a35565b6112ea565b60408051928352602083019190915201610210565b3480156105e657600080fd5b506101ee6105f536600461294a565b611361565b34801561060657600080fd5b506101ee61061536600461294a565b6113e2565b34801561062657600080fd5b506101ee610635366004612b59565b611499565b34801561064657600080fd5b506005546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561067357600080fd5b50610362610682366004612b77565b6115e4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106fd576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061071790610712908a612904565b61161a565b1461076e576107296020880188612904565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106f4565b61077d8787878787878761166f565b50505050505050565b61078e6119c0565b6107988282611a41565b5050565b84811480156107aa57508483145b610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106f4565b610818612677565b3460005b8781101561095857600061083160018a612bc2565b821461083d573061083f565b335b905060008a8a8481811061085557610855612bd5565b905060200201602081019061086a9190612904565b9050600089898581811061088057610880612bd5565b90506020020160208101906108959190612c04565b905061092c826108b783600560149054906101000a900463ffffffff16611a96565b8a8a888181106108c9576108c9612bd5565b90506020028101906108db9190612c1f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611b0f9050565b955061093782611c27565b6040860151516109479086612bc2565b9450506001909201915061081c9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b61098a6119c0565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a8b6119c0565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b505060075460ff16159150610bb890505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9083612c84565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bc56119c0565b610bcf6000611c50565b565b60075460009060ff1615610c1c5763ffffffff83166000908152600660209081526040808320858452909152902054610c159067ffffffffffffffff166001612cab565b905061097c565b50600061097c565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b610cb984610c6685600560149054906101000a900463ffffffff16611a96565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611b0f9050565b50610cc384611c27565b50505050565b60005b81811015610dbb5736838383818110610ce757610ce7612bd5565b9050602002810190610cf99190612cd3565b9050610d15610d0b6020830183612904565b6020830135610963565b610d1f5750610db3565b3063d045a0dc60c08301358360a0810135610d3e610100830183612c1f565b610d4f610100890160e08a0161294a565b610d5d6101208a018a612c1f565b6040518963ffffffff1660e01b8152600401610d7f9796959493929190612d5a565b6000604051808303818588803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b5050505050505b600101610ccc565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4d9190810190612e41565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b610f2184610c6685600560149054906101000a900463ffffffff16611a96565b5050505050565b610f306119c0565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fb957600080fd5b505af1158015610f21573d6000803e3d6000fd5b333014611006576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61077d8787878787878761076e565b73ffffffffffffffffffffffffffffffffffffffff87163014611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106f4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106f4565b600061113f8686611cc5565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111895760016004600082825461117e9190612f5e565b909155506112e09050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161127e576001600460008282546111c69190612f5e565b90915550600090506111d88787611ce7565b90506111e381611c27565b600061123662030d40600061122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611d0a565b9050611276826112596001600560149054906101000a900463ffffffff16611a96565b836040518060400160405280348152602001600081525030611b0f565b5050506112e0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106f4565b5050505050505050565b600080600061134b8761130f88600560149054906101000a900463ffffffff16611a96565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d8b915050565b8051602090910151909890975095505050505050565b6113696119c0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113ea6119c0565b73ffffffffffffffffffffffffffffffffffffffff811661148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106f4565b61149681611c50565b50565b60055473ffffffffffffffffffffffffffffffffffffffff16331461151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611574576040519150601f19603f3d011682016040523d82523d6000602084013e611579565b606091505b5050905080610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106f4565b60006020820180359060019083906115fc9086612904565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061097c576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106f4565b61169961167f6020890189612904565b602089013561169460608b0160408c01612f71565b611e79565b60006116a58686611cc5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161177357600380549060006116e183612f8e565b91905055506116f08686611faf565b341015611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106f4565b61176e61176960208a018a612904565b611fce565b6112e0565b60ff811660021480611788575060ff81166004145b15611865576003805490600061179d83612f8e565b909155506117b3905061176960208a018a612904565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061182e9030908b906000908c908c90600401612fc6565b600060405180830381600087803b15801561184857600080fd5b505af115801561185c573d6000803e3d6000fd5b505050506112e0565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161127e576003805490600061189f83612f8e565b909155506118b5905061176960208a018a612904565b6118ca6118c560208a018a612904565b611c27565b600061191662030d40600a61122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119b961192860208b018b612904565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611259565b50506112e0565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f4565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611b17612677565b6000611b268460000151611fef565b602085015190915015611b4057611b408460200151612031565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b9d8c61161a565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611bd9929190613006565b60806040518083038185885af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c91906130f9565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611c4883612f8e565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611cd46001828486613161565b611cdd9161318b565b60f81c9392505050565b6000611cf7600560018486613161565b611d00916131d3565b60e01c9392505050565b6060836003611d1a826000612153565b61ffff1614611d6757611d2e816000612153565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106f4565b6000611d7385856121d3565b9050611d8186600183612273565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611dfb8961161a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611e30929190613006565b6040805180830381865afa158015611e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e709190613219565b95945050505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611f3957611ebd816001612cab565b67ffffffffffffffff168267ffffffffffffffff1614611f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106f4565b8067ffffffffffffffff168267ffffffffffffffff161115610cc35763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611fbe8260058186613161565b611fc791613235565b9392505050565b63ffffffff81166000908152600860205260408120805491611c4883612f8e565b60008134101561202d576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106f4565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c29190613271565b905073ffffffffffffffffffffffffffffffffffffffff8116612111576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079873ffffffffffffffffffffffffffffffffffffffff8216337f0000000000000000000000000000000000000000000000000000000000000000856122de565b6000612160826002612f5e565b835110156121ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106f4565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561223c57604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611fc7565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611af8565b6060836003612283826000612153565b61ffff161461229757611d2e816000612153565b8460016122a48551612373565b6122af90600161328e565b86866040516020016122c59594939291906132a9565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610cc3908590612407565b600061ffff82111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106f4565b6000612469826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125169092919063ffffffff16565b905080516000148061248a57508080602001905181019061248a9190613342565b610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106f4565b6060610c3e8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161254a919061335f565b60006040518083038185875af1925050503d8060008114612587576040519150601f19603f3d011682016040523d82523d6000602084013e61258c565b606091505b5091509150611c1c878383876060831561262e5782516000036126275773ffffffffffffffffffffffffffffffffffffffff85163b612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f4565b5081610c3e565b610c3e83838151156126435781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016126ba604051806040016040528060008152602001600081525090565b905290565b6000606082840312156126d157600080fd5b50919050565b60008083601f8401126126e957600080fd5b50813567ffffffffffffffff81111561270157600080fd5b60208301915083602082850101111561271957600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461149657600080fd5b600080600080600080600060e0888a03121561275d57600080fd5b61276789896126bf565b965060608801359550608088013567ffffffffffffffff8082111561278b57600080fd5b6127978b838c016126d7565b909750955060a08a013591506127ac82612720565b90935060c089013590808211156127c257600080fd5b506127cf8a828b016126d7565b989b979a50959850939692959293505050565b803563ffffffff811681146127f657600080fd5b919050565b6000806040838503121561280e57600080fd5b612817836127e2565b946020939093013593505050565b60008083601f84011261283757600080fd5b50813567ffffffffffffffff81111561284f57600080fd5b6020830191508360208260051b850101111561271957600080fd5b6000806000806000806060878903121561288357600080fd5b863567ffffffffffffffff8082111561289b57600080fd5b6128a78a838b01612825565b909850965060208901359150808211156128c057600080fd5b6128cc8a838b01612825565b909650945060408901359150808211156128e557600080fd5b506128f289828a01612825565b979a9699509497509295939492505050565b60006020828403121561291657600080fd5b611fc7826127e2565b801515811461149657600080fd5b60006020828403121561293f57600080fd5b8135611fc78161291f565b60006020828403121561295c57600080fd5b8135611fc781612720565b67ffffffffffffffff8116811461149657600080fd5b60008060006060848603121561299257600080fd5b61299b846127e2565b92506020840135915060408401356129b281612967565b809150509250925092565b60008060008060a085870312156129d357600080fd5b6129dd86866126bf565b9350606085013567ffffffffffffffff8111156129f957600080fd5b612a05878288016126d7565b9094509250506080850135612a1981612720565b939692955090935050565b803560ff811681146127f657600080fd5b60008060008060608587031215612a4b57600080fd5b612a54856127e2565b9350612a6260208601612a24565b9250604085013567ffffffffffffffff811115612a7e57600080fd5b612a8a878288016126d7565b95989497509550505050565b60008060208385031215612aa957600080fd5b823567ffffffffffffffff811115612ac057600080fd5b612acc85828601612825565b90969095509350505050565b600080600080600080600060a0888a031215612af357600080fd5b8735612afe81612720565b965060208801359550604088013567ffffffffffffffff80821115612b2257600080fd5b612b2e8b838c016126d7565b909750955060608a01359150612b4382612720565b909350608089013590808211156127c257600080fd5b60008060408385031215612b6c57600080fd5b823561281781612720565b600060608284031215612b8957600080fd5b611fc783836126bf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561097c5761097c612b93565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612c1657600080fd5b611fc782612a24565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c5457600080fd5b83018035915067ffffffffffffffff821115612c6f57600080fd5b60200191503681900382131561271957600080fd5b600067ffffffffffffffff808316818103612ca157612ca1612b93565b6001019392505050565b67ffffffffffffffff818116838216019080821115612ccc57612ccc612b93565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612d0757600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612d68896127e2565b1681526020880135602082015260006040890135612d8581612967565b67ffffffffffffffff811660408401525087606083015260e06080830152612db160e083018789612d11565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612de0818587612d11565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612e38578181015183820152602001612e20565b50506000910152565b600060208284031215612e5357600080fd5b815167ffffffffffffffff80821115612e6b57600080fd5b818401915084601f830112612e7f57600080fd5b815181811115612e9157612e91612dee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612ed757612ed7612dee565b81604052828152876020848701011115612ef057600080fd5b611c1c836020830160208801612e1d565b60008151808452612f19816020860160208601612e1d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc76020830184612f01565b8082018082111561097c5761097c612b93565b600060208284031215612f8357600080fd5b8135611fc781612967565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fbf57612fbf612b93565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611c1c608083018486612d11565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261303c60e0840182612f01565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526130778282612f01565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156130bc57600080fd5b6040516040810181811067ffffffffffffffff821117156130df576130df612dee565b604052825181526020928301519281019290925250919050565b60006080828403121561310b57600080fd5b6040516060810181811067ffffffffffffffff8211171561312e5761312e612dee565b60405282518152602083015161314381612967565b602082015261315584604085016130aa565b60408201529392505050565b6000808585111561317157600080fd5b8386111561317e57600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131cb5780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131cb5760049490940360031b84901b1690921692915050565b60006040828403121561322b57600080fd5b611fc783836130aa565b8035602083101561097c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561328357600080fd5b8151611fc781612720565b61ffff818116838216019080821115612ccc57612ccc612b93565b600086516132bb818460208b01612e1d565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613333816004840160208801612e1d565b01600401979650505050505050565b60006020828403121561335457600080fd5b8151611fc78161291f565b60008251612d07818460208701612e1d56fea264697066735822122071df9779a99432656fb94b662cd3eb1247cf0ed379ec189caed8ad4af4cf049f64736f6c63430008160033",
921
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162003656380380620036568339810160408190526200003491620001ed565b818181818181620000453362000180565b6001600160a01b0380831660805281166200007357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b5050600580546001600160a01b0319163317905550506040805163416ecebf60e01b815290516001600160a01b038816955063416ecebf9450600480830194506020935090918290030181865afa15801562000130573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000156919062000225565b600560146101000a81548163ffffffff021916908363ffffffff1602179055505050505062000254565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001e857600080fd5b919050565b600080604083850312156200020157600080fd5b6200020c83620001d0565b91506200021c60208401620001d0565b90509250929050565b6000602082840312156200023857600080fd5b815163ffffffff811681146200024d57600080fd5b9392505050565b6080516133a7620002af600039600081816103a40152818161068901528181610adc01528181610f75015281816110ac015281816117f001528181611b4201528181611da101528181612035015261212e01526133a76000f3fe6080604052600436106101e75760003560e01c80637d25a05e1161010e578063ca5eb5e1116100a7578063d424388511610079578063f3fef3a311610061578063f3fef3a31461061a578063f851a4401461063a578063ff7bd03d1461066757005b8063d4243885146105da578063f2fde38b146105fa57005b8063ca5eb5e11461055f578063d045a0dc1461057f578063d0a1026014610592578063d22446ce146105a557005b8063b7abbb5d116100e0578063b7abbb5d146104f9578063bb0b6a531461050c578063bd815db014610539578063c95c55be1461054c57005b80637d25a05e1461044857806382413eac146104815780638da5cb5b146104a1578063b731ea0a146104cc57005b806356a4728911610180578063622f17f611610152578063622f17f6146103c6578063704b6c02146103f35780637112f86f14610413578063715018a61461043357005b806356a47289146103155780635a0dfe4d146103425780635b849af6146103725780635e280f111461039257005b80633400288b116101b95780633400288b14610264578063416ecebf1461028457806352ae2879146102ce578063542e7b561461030257005b806306661abd146101f057806313137d651461021957806317442b701461022c578063257f4e051461024e57005b366101ee57005b005b3480156101fc57600080fd5b5061020660035481565b6040519081526020015b60405180910390f35b6101ee610227366004612742565b610687565b34801561023857600080fd5b5060408051600181526002602082015201610210565b34801561025a57600080fd5b5061020660045481565b34801561027057600080fd5b506101ee61027f3660046127fb565b610786565b34801561029057600080fd5b506005546102b99074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156102da57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b6101ee61031036600461286a565b61079c565b34801561032157600080fd5b50610206610330366004612904565b60086020526000908152604090205481565b34801561034e57600080fd5b5061036261035d3660046127fb565b610963565b6040519015158152602001610210565b34801561037e57600080fd5b506101ee61038d36600461292d565b610982565b34801561039e57600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d257600080fd5b506102066103e1366004612904565b60096020526000908152604090205481565b3480156103ff57600080fd5b506101ee61040e36600461294a565b6109bb565b34801561041f57600080fd5b506101ee61042e36600461297d565b610a83565b34801561043f57600080fd5b506101ee610bbd565b34801561045457600080fd5b506104686104633660046127fb565b610bd1565b60405167ffffffffffffffff9091168152602001610210565b34801561048d57600080fd5b5061036261049c3660046129bd565b610c24565b3480156104ad57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102dd565b3480156104d857600080fd5b506002546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b6101ee610507366004612a35565b610c46565b34801561051857600080fd5b50610206610527366004612904565b60016020526000908152604090205481565b6101ee610547366004612a96565b610cc9565b6101ee61055a366004612a35565b610e80565b34801561056b57600080fd5b506101ee61057a36600461294a565b610f28565b6101ee61058d366004612742565b610fcd565b6101ee6105a0366004612ad8565b611015565b3480156105b157600080fd5b506105c56105c0366004612a35565b6112ea565b60408051928352602083019190915201610210565b3480156105e657600080fd5b506101ee6105f536600461294a565b611361565b34801561060657600080fd5b506101ee61061536600461294a565b6113e2565b34801561062657600080fd5b506101ee610635366004612b59565b611499565b34801561064657600080fd5b506005546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561067357600080fd5b50610362610682366004612b77565b6115e4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106fd576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061071790610712908a612904565b61161a565b1461076e576107296020880188612904565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106f4565b61077d8787878787878761166f565b50505050505050565b61078e6119c0565b6107988282611a41565b5050565b84811480156107aa57508483145b610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106f4565b610818612677565b3460005b8781101561095857600061083160018a612bc2565b821461083d573061083f565b335b905060008a8a8481811061085557610855612bd5565b905060200201602081019061086a9190612904565b9050600089898581811061088057610880612bd5565b90506020020160208101906108959190612c04565b905061092c826108b783600560149054906101000a900463ffffffff16611a96565b8a8a888181106108c9576108c9612bd5565b90506020028101906108db9190612c1f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611b0f9050565b955061093782611c27565b6040860151516109479086612bc2565b9450506001909201915061081c9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b61098a6119c0565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a8b6119c0565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b505060075460ff16159150610bb890505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9083612c84565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bc56119c0565b610bcf6000611c50565b565b60075460009060ff1615610c1c5763ffffffff83166000908152600660209081526040808320858452909152902054610c159067ffffffffffffffff166001612cab565b905061097c565b50600061097c565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b610cb984610c6685600560149054906101000a900463ffffffff16611a96565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611b0f9050565b50610cc384611c27565b50505050565b60005b81811015610dbb5736838383818110610ce757610ce7612bd5565b9050602002810190610cf99190612cd3565b9050610d15610d0b6020830183612904565b6020830135610963565b610d1f5750610db3565b3063d045a0dc60c08301358360a0810135610d3e610100830183612c1f565b610d4f610100890160e08a0161294a565b610d5d6101208a018a612c1f565b6040518963ffffffff1660e01b8152600401610d7f9796959493929190612d5a565b6000604051808303818588803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b5050505050505b600101610ccc565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4d9190810190612e41565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b610f2184610c6685600560149054906101000a900463ffffffff16611a96565b5050505050565b610f306119c0565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fb957600080fd5b505af1158015610f21573d6000803e3d6000fd5b333014611006576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61077d8787878787878761076e565b73ffffffffffffffffffffffffffffffffffffffff87163014611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106f4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106f4565b600061113f8686611cc5565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111895760016004600082825461117e9190612f5e565b909155506112e09050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161127e576001600460008282546111c69190612f5e565b90915550600090506111d88787611ce7565b90506111e381611c27565b600061123662030d40600061122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611d0a565b9050611276826112596001600560149054906101000a900463ffffffff16611a96565b836040518060400160405280348152602001600081525030611b0f565b5050506112e0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106f4565b5050505050505050565b600080600061134b8761130f88600560149054906101000a900463ffffffff16611a96565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d8b915050565b8051602090910151909890975095505050505050565b6113696119c0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113ea6119c0565b73ffffffffffffffffffffffffffffffffffffffff811661148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106f4565b61149681611c50565b50565b60055473ffffffffffffffffffffffffffffffffffffffff16331461151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611574576040519150601f19603f3d011682016040523d82523d6000602084013e611579565b606091505b5050905080610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106f4565b60006020820180359060019083906115fc9086612904565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061097c576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106f4565b61169961167f6020890189612904565b602089013561169460608b0160408c01612f71565b611e79565b60006116a58686611cc5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161177357600380549060006116e183612f8e565b91905055506116f08686611faf565b341015611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106f4565b61176e61176960208a018a612904565b611fce565b6112e0565b60ff811660021480611788575060ff81166004145b15611865576003805490600061179d83612f8e565b909155506117b3905061176960208a018a612904565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061182e9030908b906000908c908c90600401612fc6565b600060405180830381600087803b15801561184857600080fd5b505af115801561185c573d6000803e3d6000fd5b505050506112e0565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161127e576003805490600061189f83612f8e565b909155506118b5905061176960208a018a612904565b6118ca6118c560208a018a612904565b611c27565b600061191662030d40600a61122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119b961192860208b018b612904565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611259565b50506112e0565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f4565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611b17612677565b6000611b268460000151611fef565b602085015190915015611b4057611b408460200151612031565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b9d8c61161a565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611bd9929190613006565b60806040518083038185885af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c91906130f9565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611c4883612f8e565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611cd46001828486613161565b611cdd9161318b565b60f81c9392505050565b6000611cf7600560018486613161565b611d00916131d3565b60e01c9392505050565b6060836003611d1a826000612153565b61ffff1614611d6757611d2e816000612153565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106f4565b6000611d7385856121d3565b9050611d8186600183612273565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611dfb8961161a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611e30929190613006565b6040805180830381865afa158015611e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e709190613219565b95945050505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611f3957611ebd816001612cab565b67ffffffffffffffff168267ffffffffffffffff1614611f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106f4565b8067ffffffffffffffff168267ffffffffffffffff161115610cc35763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611fbe8260058186613161565b611fc791613235565b9392505050565b63ffffffff81166000908152600860205260408120805491611c4883612f8e565b60008134101561202d576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106f4565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c29190613271565b905073ffffffffffffffffffffffffffffffffffffffff8116612111576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079873ffffffffffffffffffffffffffffffffffffffff8216337f0000000000000000000000000000000000000000000000000000000000000000856122de565b6000612160826002612f5e565b835110156121ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106f4565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561223c57604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611fc7565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611af8565b6060836003612283826000612153565b61ffff161461229757611d2e816000612153565b8460016122a48551612373565b6122af90600161328e565b86866040516020016122c59594939291906132a9565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610cc3908590612407565b600061ffff82111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106f4565b6000612469826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125169092919063ffffffff16565b905080516000148061248a57508080602001905181019061248a9190613342565b610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106f4565b6060610c3e8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161254a919061335f565b60006040518083038185875af1925050503d8060008114612587576040519150601f19603f3d011682016040523d82523d6000602084013e61258c565b606091505b5091509150611c1c878383876060831561262e5782516000036126275773ffffffffffffffffffffffffffffffffffffffff85163b612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f4565b5081610c3e565b610c3e83838151156126435781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016126ba604051806040016040528060008152602001600081525090565b905290565b6000606082840312156126d157600080fd5b50919050565b60008083601f8401126126e957600080fd5b50813567ffffffffffffffff81111561270157600080fd5b60208301915083602082850101111561271957600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461149657600080fd5b600080600080600080600060e0888a03121561275d57600080fd5b61276789896126bf565b965060608801359550608088013567ffffffffffffffff8082111561278b57600080fd5b6127978b838c016126d7565b909750955060a08a013591506127ac82612720565b90935060c089013590808211156127c257600080fd5b506127cf8a828b016126d7565b989b979a50959850939692959293505050565b803563ffffffff811681146127f657600080fd5b919050565b6000806040838503121561280e57600080fd5b612817836127e2565b946020939093013593505050565b60008083601f84011261283757600080fd5b50813567ffffffffffffffff81111561284f57600080fd5b6020830191508360208260051b850101111561271957600080fd5b6000806000806000806060878903121561288357600080fd5b863567ffffffffffffffff8082111561289b57600080fd5b6128a78a838b01612825565b909850965060208901359150808211156128c057600080fd5b6128cc8a838b01612825565b909650945060408901359150808211156128e557600080fd5b506128f289828a01612825565b979a9699509497509295939492505050565b60006020828403121561291657600080fd5b611fc7826127e2565b801515811461149657600080fd5b60006020828403121561293f57600080fd5b8135611fc78161291f565b60006020828403121561295c57600080fd5b8135611fc781612720565b67ffffffffffffffff8116811461149657600080fd5b60008060006060848603121561299257600080fd5b61299b846127e2565b92506020840135915060408401356129b281612967565b809150509250925092565b60008060008060a085870312156129d357600080fd5b6129dd86866126bf565b9350606085013567ffffffffffffffff8111156129f957600080fd5b612a05878288016126d7565b9094509250506080850135612a1981612720565b939692955090935050565b803560ff811681146127f657600080fd5b60008060008060608587031215612a4b57600080fd5b612a54856127e2565b9350612a6260208601612a24565b9250604085013567ffffffffffffffff811115612a7e57600080fd5b612a8a878288016126d7565b95989497509550505050565b60008060208385031215612aa957600080fd5b823567ffffffffffffffff811115612ac057600080fd5b612acc85828601612825565b90969095509350505050565b600080600080600080600060a0888a031215612af357600080fd5b8735612afe81612720565b965060208801359550604088013567ffffffffffffffff80821115612b2257600080fd5b612b2e8b838c016126d7565b909750955060608a01359150612b4382612720565b909350608089013590808211156127c257600080fd5b60008060408385031215612b6c57600080fd5b823561281781612720565b600060608284031215612b8957600080fd5b611fc783836126bf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561097c5761097c612b93565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612c1657600080fd5b611fc782612a24565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c5457600080fd5b83018035915067ffffffffffffffff821115612c6f57600080fd5b60200191503681900382131561271957600080fd5b600067ffffffffffffffff808316818103612ca157612ca1612b93565b6001019392505050565b67ffffffffffffffff818116838216019080821115612ccc57612ccc612b93565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612d0757600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612d68896127e2565b1681526020880135602082015260006040890135612d8581612967565b67ffffffffffffffff811660408401525087606083015260e06080830152612db160e083018789612d11565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612de0818587612d11565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612e38578181015183820152602001612e20565b50506000910152565b600060208284031215612e5357600080fd5b815167ffffffffffffffff80821115612e6b57600080fd5b818401915084601f830112612e7f57600080fd5b815181811115612e9157612e91612dee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612ed757612ed7612dee565b81604052828152876020848701011115612ef057600080fd5b611c1c836020830160208801612e1d565b60008151808452612f19816020860160208601612e1d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc76020830184612f01565b8082018082111561097c5761097c612b93565b600060208284031215612f8357600080fd5b8135611fc781612967565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fbf57612fbf612b93565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611c1c608083018486612d11565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261303c60e0840182612f01565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526130778282612f01565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156130bc57600080fd5b6040516040810181811067ffffffffffffffff821117156130df576130df612dee565b604052825181526020928301519281019290925250919050565b60006080828403121561310b57600080fd5b6040516060810181811067ffffffffffffffff8211171561312e5761312e612dee565b60405282518152602083015161314381612967565b602082015261315584604085016130aa565b60408201529392505050565b6000808585111561317157600080fd5b8386111561317e57600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131cb5780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131cb5760049490940360031b84901b1690921692915050565b60006040828403121561322b57600080fd5b611fc783836130aa565b8035602083101561097c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561328357600080fd5b8151611fc781612720565b61ffff818116838216019080821115612ccc57612ccc612b93565b600086516132bb818460208b01612e1d565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613333816004840160208801612e1d565b01600401979650505050505050565b60006020828403121561335457600080fd5b8151611fc78161291f565b60008251612d07818460208701612e1d56fea2646970667358221220ea1e4db0f76b8a2860a3aa0e6411266eac3fccc97acdc8a3af7e1294855f6f6c64736f6c63430008160033",
922
+ "deployedBytecode": "0x6080604052600436106101e75760003560e01c80637d25a05e1161010e578063ca5eb5e1116100a7578063d424388511610079578063f3fef3a311610061578063f3fef3a31461061a578063f851a4401461063a578063ff7bd03d1461066757005b8063d4243885146105da578063f2fde38b146105fa57005b8063ca5eb5e11461055f578063d045a0dc1461057f578063d0a1026014610592578063d22446ce146105a557005b8063b7abbb5d116100e0578063b7abbb5d146104f9578063bb0b6a531461050c578063bd815db014610539578063c95c55be1461054c57005b80637d25a05e1461044857806382413eac146104815780638da5cb5b146104a1578063b731ea0a146104cc57005b806356a4728911610180578063622f17f611610152578063622f17f6146103c6578063704b6c02146103f35780637112f86f14610413578063715018a61461043357005b806356a47289146103155780635a0dfe4d146103425780635b849af6146103725780635e280f111461039257005b80633400288b116101b95780633400288b14610264578063416ecebf1461028457806352ae2879146102ce578063542e7b561461030257005b806306661abd146101f057806313137d651461021957806317442b701461022c578063257f4e051461024e57005b366101ee57005b005b3480156101fc57600080fd5b5061020660035481565b6040519081526020015b60405180910390f35b6101ee610227366004612742565b610687565b34801561023857600080fd5b5060408051600181526002602082015201610210565b34801561025a57600080fd5b5061020660045481565b34801561027057600080fd5b506101ee61027f3660046127fb565b610786565b34801561029057600080fd5b506005546102b99074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156102da57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b6101ee61031036600461286a565b61079c565b34801561032157600080fd5b50610206610330366004612904565b60086020526000908152604090205481565b34801561034e57600080fd5b5061036261035d3660046127fb565b610963565b6040519015158152602001610210565b34801561037e57600080fd5b506101ee61038d36600461292d565b610982565b34801561039e57600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d257600080fd5b506102066103e1366004612904565b60096020526000908152604090205481565b3480156103ff57600080fd5b506101ee61040e36600461294a565b6109bb565b34801561041f57600080fd5b506101ee61042e36600461297d565b610a83565b34801561043f57600080fd5b506101ee610bbd565b34801561045457600080fd5b506104686104633660046127fb565b610bd1565b60405167ffffffffffffffff9091168152602001610210565b34801561048d57600080fd5b5061036261049c3660046129bd565b610c24565b3480156104ad57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102dd565b3480156104d857600080fd5b506002546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b6101ee610507366004612a35565b610c46565b34801561051857600080fd5b50610206610527366004612904565b60016020526000908152604090205481565b6101ee610547366004612a96565b610cc9565b6101ee61055a366004612a35565b610e80565b34801561056b57600080fd5b506101ee61057a36600461294a565b610f28565b6101ee61058d366004612742565b610fcd565b6101ee6105a0366004612ad8565b611015565b3480156105b157600080fd5b506105c56105c0366004612a35565b6112ea565b60408051928352602083019190915201610210565b3480156105e657600080fd5b506101ee6105f536600461294a565b611361565b34801561060657600080fd5b506101ee61061536600461294a565b6113e2565b34801561062657600080fd5b506101ee610635366004612b59565b611499565b34801561064657600080fd5b506005546102dd9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561067357600080fd5b50610362610682366004612b77565b6115e4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106fd576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061071790610712908a612904565b61161a565b1461076e576107296020880188612904565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106f4565b61077d8787878787878761166f565b50505050505050565b61078e6119c0565b6107988282611a41565b5050565b84811480156107aa57508483145b610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106f4565b610818612677565b3460005b8781101561095857600061083160018a612bc2565b821461083d573061083f565b335b905060008a8a8481811061085557610855612bd5565b905060200201602081019061086a9190612904565b9050600089898581811061088057610880612bd5565b90506020020160208101906108959190612c04565b905061092c826108b783600560149054906101000a900463ffffffff16611a96565b8a8a888181106108c9576108c9612bd5565b90506020028101906108db9190612c1f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611b0f9050565b955061093782611c27565b6040860151516109479086612bc2565b9450506001909201915061081c9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b61098a6119c0565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a8b6119c0565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b505060075460ff16159150610bb890505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9083612c84565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bc56119c0565b610bcf6000611c50565b565b60075460009060ff1615610c1c5763ffffffff83166000908152600660209081526040808320858452909152902054610c159067ffffffffffffffff166001612cab565b905061097c565b50600061097c565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b610cb984610c6685600560149054906101000a900463ffffffff16611a96565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611b0f9050565b50610cc384611c27565b50505050565b60005b81811015610dbb5736838383818110610ce757610ce7612bd5565b9050602002810190610cf99190612cd3565b9050610d15610d0b6020830183612904565b6020830135610963565b610d1f5750610db3565b3063d045a0dc60c08301358360a0810135610d3e610100830183612c1f565b610d4f610100890160e08a0161294a565b610d5d6101208a018a612c1f565b6040518963ffffffff1660e01b8152600401610d7f9796959493929190612d5a565b6000604051808303818588803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b5050505050505b600101610ccc565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4d9190810190612e41565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b610f2184610c6685600560149054906101000a900463ffffffff16611a96565b5050505050565b610f306119c0565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fb957600080fd5b505af1158015610f21573d6000803e3d6000fd5b333014611006576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61077d8787878787878761076e565b73ffffffffffffffffffffffffffffffffffffffff87163014611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106f4565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106f4565b600061113f8686611cc5565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111895760016004600082825461117e9190612f5e565b909155506112e09050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161127e576001600460008282546111c69190612f5e565b90915550600090506111d88787611ce7565b90506111e381611c27565b600061123662030d40600061122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611d0a565b9050611276826112596001600560149054906101000a900463ffffffff16611a96565b836040518060400160405280348152602001600081525030611b0f565b5050506112e0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106f4565b5050505050505050565b600080600061134b8761130f88600560149054906101000a900463ffffffff16611a96565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d8b915050565b8051602090910151909890975095505050505050565b6113696119c0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113ea6119c0565b73ffffffffffffffffffffffffffffffffffffffff811661148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106f4565b61149681611c50565b50565b60055473ffffffffffffffffffffffffffffffffffffffff16331461151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106f4565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611574576040519150601f19603f3d011682016040523d82523d6000602084013e611579565b606091505b5050905080610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106f4565b60006020820180359060019083906115fc9086612904565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061097c576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106f4565b61169961167f6020890189612904565b602089013561169460608b0160408c01612f71565b611e79565b60006116a58686611cc5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161177357600380549060006116e183612f8e565b91905055506116f08686611faf565b341015611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106f4565b61176e61176960208a018a612904565b611fce565b6112e0565b60ff811660021480611788575060ff81166004145b15611865576003805490600061179d83612f8e565b909155506117b3905061176960208a018a612904565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061182e9030908b906000908c908c90600401612fc6565b600060405180830381600087803b15801561184857600080fd5b505af115801561185c573d6000803e3d6000fd5b505050506112e0565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161127e576003805490600061189f83612f8e565b909155506118b5905061176960208a018a612904565b6118ca6118c560208a018a612904565b611c27565b600061191662030d40600a61122f604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119b961192860208b018b612904565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611259565b50506112e0565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f4565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611b17612677565b6000611b268460000151611fef565b602085015190915015611b4057611b408460200151612031565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b9d8c61161a565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611bd9929190613006565b60806040518083038185885af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c91906130f9565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611c4883612f8e565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611cd46001828486613161565b611cdd9161318b565b60f81c9392505050565b6000611cf7600560018486613161565b611d00916131d3565b60e01c9392505050565b6060836003611d1a826000612153565b61ffff1614611d6757611d2e816000612153565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106f4565b6000611d7385856121d3565b9050611d8186600183612273565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611dfb8961161a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611e30929190613006565b6040805180830381865afa158015611e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e709190613219565b95945050505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611f3957611ebd816001612cab565b67ffffffffffffffff168267ffffffffffffffff1614611f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106f4565b8067ffffffffffffffff168267ffffffffffffffff161115610cc35763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611fbe8260058186613161565b611fc791613235565b9392505050565b63ffffffff81166000908152600860205260408120805491611c4883612f8e565b60008134101561202d576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106f4565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c29190613271565b905073ffffffffffffffffffffffffffffffffffffffff8116612111576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079873ffffffffffffffffffffffffffffffffffffffff8216337f0000000000000000000000000000000000000000000000000000000000000000856122de565b6000612160826002612f5e565b835110156121ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106f4565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561223c57604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611fc7565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611af8565b6060836003612283826000612153565b61ffff161461229757611d2e816000612153565b8460016122a48551612373565b6122af90600161328e565b86866040516020016122c59594939291906132a9565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610cc3908590612407565b600061ffff82111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106f4565b6000612469826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125169092919063ffffffff16565b905080516000148061248a57508080602001905181019061248a9190613342565b610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106f4565b6060610c3e8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161254a919061335f565b60006040518083038185875af1925050503d8060008114612587576040519150601f19603f3d011682016040523d82523d6000602084013e61258c565b606091505b5091509150611c1c878383876060831561262e5782516000036126275773ffffffffffffffffffffffffffffffffffffffff85163b612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f4565b5081610c3e565b610c3e83838151156126435781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f49190612f4b565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016126ba604051806040016040528060008152602001600081525090565b905290565b6000606082840312156126d157600080fd5b50919050565b60008083601f8401126126e957600080fd5b50813567ffffffffffffffff81111561270157600080fd5b60208301915083602082850101111561271957600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461149657600080fd5b600080600080600080600060e0888a03121561275d57600080fd5b61276789896126bf565b965060608801359550608088013567ffffffffffffffff8082111561278b57600080fd5b6127978b838c016126d7565b909750955060a08a013591506127ac82612720565b90935060c089013590808211156127c257600080fd5b506127cf8a828b016126d7565b989b979a50959850939692959293505050565b803563ffffffff811681146127f657600080fd5b919050565b6000806040838503121561280e57600080fd5b612817836127e2565b946020939093013593505050565b60008083601f84011261283757600080fd5b50813567ffffffffffffffff81111561284f57600080fd5b6020830191508360208260051b850101111561271957600080fd5b6000806000806000806060878903121561288357600080fd5b863567ffffffffffffffff8082111561289b57600080fd5b6128a78a838b01612825565b909850965060208901359150808211156128c057600080fd5b6128cc8a838b01612825565b909650945060408901359150808211156128e557600080fd5b506128f289828a01612825565b979a9699509497509295939492505050565b60006020828403121561291657600080fd5b611fc7826127e2565b801515811461149657600080fd5b60006020828403121561293f57600080fd5b8135611fc78161291f565b60006020828403121561295c57600080fd5b8135611fc781612720565b67ffffffffffffffff8116811461149657600080fd5b60008060006060848603121561299257600080fd5b61299b846127e2565b92506020840135915060408401356129b281612967565b809150509250925092565b60008060008060a085870312156129d357600080fd5b6129dd86866126bf565b9350606085013567ffffffffffffffff8111156129f957600080fd5b612a05878288016126d7565b9094509250506080850135612a1981612720565b939692955090935050565b803560ff811681146127f657600080fd5b60008060008060608587031215612a4b57600080fd5b612a54856127e2565b9350612a6260208601612a24565b9250604085013567ffffffffffffffff811115612a7e57600080fd5b612a8a878288016126d7565b95989497509550505050565b60008060208385031215612aa957600080fd5b823567ffffffffffffffff811115612ac057600080fd5b612acc85828601612825565b90969095509350505050565b600080600080600080600060a0888a031215612af357600080fd5b8735612afe81612720565b965060208801359550604088013567ffffffffffffffff80821115612b2257600080fd5b612b2e8b838c016126d7565b909750955060608a01359150612b4382612720565b909350608089013590808211156127c257600080fd5b60008060408385031215612b6c57600080fd5b823561281781612720565b600060608284031215612b8957600080fd5b611fc783836126bf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561097c5761097c612b93565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612c1657600080fd5b611fc782612a24565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c5457600080fd5b83018035915067ffffffffffffffff821115612c6f57600080fd5b60200191503681900382131561271957600080fd5b600067ffffffffffffffff808316818103612ca157612ca1612b93565b6001019392505050565b67ffffffffffffffff818116838216019080821115612ccc57612ccc612b93565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612d0757600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612d68896127e2565b1681526020880135602082015260006040890135612d8581612967565b67ffffffffffffffff811660408401525087606083015260e06080830152612db160e083018789612d11565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612de0818587612d11565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612e38578181015183820152602001612e20565b50506000910152565b600060208284031215612e5357600080fd5b815167ffffffffffffffff80821115612e6b57600080fd5b818401915084601f830112612e7f57600080fd5b815181811115612e9157612e91612dee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612ed757612ed7612dee565b81604052828152876020848701011115612ef057600080fd5b611c1c836020830160208801612e1d565b60008151808452612f19816020860160208601612e1d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc76020830184612f01565b8082018082111561097c5761097c612b93565b600060208284031215612f8357600080fd5b8135611fc781612967565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fbf57612fbf612b93565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611c1c608083018486612d11565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261303c60e0840182612f01565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526130778282612f01565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156130bc57600080fd5b6040516040810181811067ffffffffffffffff821117156130df576130df612dee565b604052825181526020928301519281019290925250919050565b60006080828403121561310b57600080fd5b6040516060810181811067ffffffffffffffff8211171561312e5761312e612dee565b60405282518152602083015161314381612967565b602082015261315584604085016130aa565b60408201529392505050565b6000808585111561317157600080fd5b8386111561317e57600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131cb5780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131cb5760049490940360031b84901b1690921692915050565b60006040828403121561322b57600080fd5b611fc783836130aa565b8035602083101561097c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561328357600080fd5b8151611fc781612720565b61ffff818116838216019080821115612ccc57612ccc612b93565b600086516132bb818460208b01612e1d565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613333816004840160208801612e1d565b01600401979650505050505050565b60006020828403121561335457600080fd5b8151611fc78161291f565b60008251612d07818460208701612e1d56fea2646970667358221220ea1e4db0f76b8a2860a3aa0e6411266eac3fccc97acdc8a3af7e1294855f6f6c64736f6c63430008160033",
923
923
  "linkReferences": {},
924
924
  "deployedLinkReferences": {}
925
925
  }
@@ -3,8 +3,8 @@
3
3
  "contractName": "MsgCodec",
4
4
  "sourceName": "contracts/oapp/examples/OmniCounterAbstract.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220738c67afb1622d79cb13a76720cc8c0c130a3ffb56119e99783a3e43c98198c664736f6c63430008160033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220738c67afb1622d79cb13a76720cc8c0c130a3ffb56119e99783a3e43c98198c664736f6c63430008160033",
6
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f9a5511d8745fbcf03dd7acef10b09ea831e6e9dec37e74270584dff0d1701d64736f6c63430008160033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f9a5511d8745fbcf03dd7acef10b09ea831e6e9dec37e74270584dff0d1701d64736f6c63430008160033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -361,8 +361,8 @@
361
361
  "type": "function"
362
362
  }
363
363
  ],
364
- "bytecode": "0x60e06040523480156200001157600080fd5b5060405162002da338038062002da383398101604081905262000034916200013c565b81816200004133620000cf565b6001600160a01b03808316608052811660a0819052604080516352ae287960e01b815290516352ae2879916004808201926020929091908290030181865afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b8919062000174565b6001600160a01b031660c052506200019992505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013757600080fd5b919050565b600080604083850312156200015057600080fd5b6200015b836200011f565b91506200016b602084016200011f565b90509250929050565b6000602082840312156200018757600080fd5b62000192826200011f565b9392505050565b60805160a05160c051612bb7620001ec6000396000818161018d0152611b9b01526000818161029f015281816105f0015281816111d90152611384015260008181611a2f0152611bd90152612bb76000f3fe6080604052600436106100dd5760003560e01c80638e9e70991161007f578063bf7b5d7a11610059578063bf7b5d7a1461028d578063f0cd3836146102c1578063f2fde38b146102e1578063f8bcddf61461030157600080fd5b80638e9e709914610236578063afea44ef1461024b578063b9a1f5e71461026b57600080fd5b806352ae2879116100bb57806352ae28791461017b57806354fd4d50146101d4578063715018a6146101f65780638da5cb5b1461020b57600080fd5b806310f9cf3a146100e25780632913daa01461010457806350dfa9371461015b575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046120c1565b610321565b005b34801561011057600080fd5b5060005461013d9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61016e61016936600461215b565b610539565b6040516101529190612235565b34801561018757600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101e057600080fd5b5060408051600281526000602082015201610152565b34801561020257600080fd5b506101026105d4565b34801561021757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101af565b34801561024257600080fd5b5061016e6105e8565b34801561025757600080fd5b5061010261026636600461225e565b610859565b34801561027757600080fd5b506102806108b4565b604051610152919061227b565b34801561029957600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd57600080fd5b5061016e6102dc36600461215b565b610933565b3480156102ed57600080fd5b506101026102fc3660046122da565b610bd0565b34801561030d57600080fd5b5061010261031c366004612310565b610c8c565b3361dead1461035c576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061039c8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b905060008267ffffffffffffffff8111156103b9576103b9612385565b6040519080825280602002602001820160405280156103e2578160200160208202803683370190505b50905060008367ffffffffffffffff81111561040057610400612385565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b8481101561051857366000878784818110610456576104566123b4565b905060200281019061046891906123e3565b909250905061047b600460008385612448565b61048491612472565b60e01c858481518110610499576104996123b4565b63ffffffff909216602092830291909101909101526104bb8160048185612448565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505086518792508691508110610503576105036123b4565b60209081029190910101525050600101610439565b506105238383610e6a565b61052e838383610f54565b505050505050505050565b60603361dead14610576576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105b68686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b90506105c1816110d2565b6105ca8161137d565b9695505050505050565b6105dc6114e4565b6105e66000611565565b565b6001546060907f000000000000000000000000000000000000000000000000000000000000000090819060009067ffffffffffffffff81111561062d5761062d612385565b60405190808252806020026020018201604052801561068857816020015b6106756040518060600160405280600063ffffffff16815260200160008152602001600081525090565b81526020019060019003908161064b5790505b50905060005b600154811015610830576000600182815481106106ad576106ad6123b4565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290517f56a4728900000000000000000000000000000000000000000000000000000000815260048101829052909350909182019073ffffffffffffffffffffffffffffffffffffffff8716906356a4728990602401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b91906124ba565b81526040517f622f17f600000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260209091019073ffffffffffffffffffffffffffffffffffffffff87169063622f17f690602401602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080791906124ba565b81525083838151811061081c5761081c6123b4565b60209081029190910101525060010161068e565b5080604051602001610842919061227b565b604051602081830303815290604052935050505090565b6108616114e4565b6000805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561092a5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108d8565b50505050905090565b60603361dead14610970576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517e0200000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166022820152602a01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060008515610a6557610a60610a5b8888888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b6115da565b610ade565b6001805480602002602001604051908101604052809291908181526020016000905b82821015610ad95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610a87565b505050505b805190915015610bc6578051604051610afd90849083906020016124d3565b604051602081830303815290604052925060005b8161ffff16811015610bc35783838281518110610b3057610b306123b4565b602002602001015160000151848381518110610b4e57610b4e6123b4565b602002602001015160200151858481518110610b6c57610b6c6123b4565b602002602001015160400151604051602001610b8b949392919061251d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529350600101610b11565b50505b5095945050505050565b610bd86114e4565b73ffffffffffffffffffffffffffffffffffffffff8116610c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c8981611565565b50565b610c946114e4565b610ca060016000612017565b60005b81811015610cf7576001838383818110610cbf57610cbf6123b4565b835460018101855560009485526020909420606090910292909201926003029091019050610ced8282612586565b5050600101610ca3565b505050565b60608267ffffffffffffffff811115610d1757610d17612385565b604051908082528060200260200182016040528015610dbd57816020015b604080516101608101825260006101008201818152610120830182905261014083018290528252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d355790505b50905060005b83811015610e6257366000868684818110610de057610de06123b4565b9050602002810190610df291906123e3565b91509150610e0082826118a1565b848481518110610e1257610e126123b4565b6020026020010181905250848381518110610e2f57610e2f6123b4565b6020026020010151848481518110610e4957610e496123b4565b6020908102919091010151608001525050600101610dc3565b509392505050565b815115610f00576000610e7c836115da565b905060005b8151811015610efd576000828281518110610e9e57610e9e6123b4565b6020026020010151600001519050610eb684826119d4565b610ef4576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b50600101610e81565b50505b6000610f0a611a2b565b9050610f1682826119d4565b610cf7576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b6000610f5e611a2b565b9050606060005b8451811015610fd6578263ffffffff16858281518110610f8757610f876123b4565b602002602001015163ffffffff1603610fce57838181518110610fac57610fac6123b4565b6020026020010151806020019051810190610fc79190612650565b9150610fd6565b600101610f65565b5060005b84518110156110ca576000858281518110610ff757610ff76123b4565b602002602001015190506000858381518110611015576110156123b4565b60200260200101518060200190518101906110309190612650565b9050600061103e8584611ac1565b509050600061104d8388611ac1565b915050808211156110ba576040517f1915975700000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c77565b505060019092019150610fda9050565b505050505050565b60005481517401000000000000000000000000000000000000000090910467ffffffffffffffff1610156111605760005481516040517f9db086050000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090920467ffffffffffffffff1660048301526024820152604401610c77565b805115610c895760008080805b845181101561137657600085828151811061118a5761118a6123b4565b602090810291909101810151805180519201516040517f5a0dfe4d00000000000000000000000000000000000000000000000000000000815263ffffffff9093166004840152602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635a0dfe4d90604401602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611259919061272d565b611263575061136e565b80515163ffffffff80871691161080611295575080515163ffffffff8681169116148015611295575080516020015184115b156112cc576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80515163ffffffff86811691161415806112eb57508051602001518414155b1561130c578051805160209091015190955093506113098585611b5e565b92505b6113158361277e565b92508267ffffffffffffffff1681600001516040015167ffffffffffffffff161461136c576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60010161116d565b5050505050565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163463bd815db060e01b866040516024016113d391906127a5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161145c919061290b565b60006040518083038185875af1925050503d8060008114611499576040519150601f19603f3d011682016040523d82523d6000602084013e61149e565b606091505b509150915060006114af8383611c4d565b90506114b9611a2b565b816040516020016114cb929190612927565b6040516020818303038152906040529350505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c77565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060006001805480602002602001604051908101604052809291908181526020016000905b828210156116525760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611600565b5050505090506000835167ffffffffffffffff81111561167457611674612385565b6040519080825280602002602001820160405280156116dd57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116925790505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b85518110156117af576000868281518110611721576117216123b4565b602002602001015160000151600001519050600061173f8683611d6c565b90506000811215801561175b575060006117598684611d6c565b125b156117a5578361176a81612972565b94505085818151811061177f5761177f6123b4565b6020026020010151858581518110611799576117996123b4565b60200260200101819052505b5050600101611704565b50600081126118995760006117c58260016129aa565b90508067ffffffffffffffff8111156117e0576117e0612385565b60405190808252806020026020018201604052801561184957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117fe5790505b50945060005b8181101561189657838181518110611869576118696123b4565b6020026020010151868281518110611883576118836123b4565b602090810291909101015260010161184f565b50505b505050919050565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260405180606001604052806119108585611de1565b63ffffffff1681526020016119258585611e04565b81526020016119348585611e1d565b67ffffffffffffffff169052815261194c8383611e40565b63ffffffff1660208201526119618383611e50565b73ffffffffffffffffffffffffffffffffffffffff1660408201526119868383611e62565b60608201526119958383611e72565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b8351811015611a1f578263ffffffff168482815181106119fa576119fa6123b4565b602002602001015163ffffffff1603611a17576001915050611a25565b6001016119d8565b50600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc91906129bd565b905090565b60008060005b8451811015611b4e578363ffffffff16858281518110611ae957611ae96123b4565b60200260200101516000015163ffffffff1603611b4657848181518110611b1257611b126123b4565b602002602001015160200151858281518110611b3057611b306123b4565b6020026020010151604001519250925050611b57565b600101611ac7565b50600080915091505b9250929050565b6040517fa0dd43fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4691906129da565b9392505050565b60608215611cb7576040517f614cbd8a00000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2072657665727400000000000000000000000000000000000000000000006044820152606401610c77565b7f8351eea700000000000000000000000000000000000000000000000000000000611ce1836129f7565b7fffffffff000000000000000000000000000000000000000000000000000000001614611d3c57816040517f614cbd8a000000000000000000000000000000000000000000000000000000008152600401610c779190612235565b611d566004808451611d4e9190612a43565b849190611e8d565b905080806020019051810190611c469190612a56565b6000805b8351811015611db8578263ffffffff16848281518110611d9257611d926123b4565b60200260200101516000015163ffffffff1603611db0579050611a25565b600101611d70565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b6000611df1600d60098486612448565b611dfa91612472565b60e01c9392505050565b6000611e14602d600d8486612448565b611c4691612aff565b6000611e2d600960018486612448565b611e3691612b3b565b60c01c9392505050565b6000611df16031602d8486612448565b6000611c46611e5f8484612007565b90565b6000611e14607160518486612448565b366000611e828360718187612448565b915091509250929050565b606081611e9b81601f6129aa565b1015611f03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610c77565b611f0d82846129aa565b84511015611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c77565b606082158015611f965760405191506000825260208201604052611ffe565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fcf578051835260209283019201611fb7565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000611e14605160318486612448565b5080546000825560030290600052602060002090810190610c8991905b808211156120785780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001681556000600182018190556002820155600301612034565b5090565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208260051b8501011115611b5757600080fd5b600080600080600080606087890312156120da57600080fd5b863567ffffffffffffffff808211156120f257600080fd5b6120fe8a838b0161207c565b9098509650602089013591508082111561211757600080fd5b6121238a838b0161207c565b9096509450604089013591508082111561213c57600080fd5b5061214989828a0161207c565b979a9699509497509295939492505050565b6000806000806040858703121561217157600080fd5b843567ffffffffffffffff8082111561218957600080fd5b6121958883890161207c565b909650945060208701359150808211156121ae57600080fd5b506121bb8782880161207c565b95989497509550505050565b60005b838110156121e25781810151838201526020016121ca565b50506000910152565b600081518084526122038160208601602086016121c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c4660208301846121eb565b67ffffffffffffffff81168114610c8957600080fd5b60006020828403121561227057600080fd5b8135611c4681612248565b602080825282518282018190526000919060409081850190868401855b828110156122cd578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101612298565b5091979650505050505050565b6000602082840312156122ec57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611c4657600080fd5b6000806020838503121561232357600080fd5b823567ffffffffffffffff8082111561233b57600080fd5b818501915085601f83011261234f57600080fd5b81358181111561235e57600080fd5b86602060608302850101111561237357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261241857600080fd5b83018035915067ffffffffffffffff82111561243357600080fd5b602001915036819003821315611b5757600080fd5b6000808585111561245857600080fd5b8386111561246557600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156124b25780818660040360031b1b83161692505b505092915050565b6000602082840312156124cc57600080fd5b5051919050565b600083516124e58184602088016121c7565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b6000855161252f818460208a016121c7565b60e09590951b7fffffffff0000000000000000000000000000000000000000000000000000000016919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c8957600080fd5b813561259181612574565b63ffffffff81167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008354161782555060208201356001820155604082013560028201555050565b6040516060810167ffffffffffffffff811182821017156125fb576125fb612385565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561264857612648612385565b604052919050565b6000602080838503121561266357600080fd5b825167ffffffffffffffff8082111561267b57600080fd5b818501915085601f83011261268f57600080fd5b8151818111156126a1576126a1612385565b6126af848260051b01612601565b818152848101925060609182028401850191888311156126ce57600080fd5b938501935b828510156127215780858a0312156126eb5760008081fd5b6126f36125d8565b85516126fe81612574565b8152858701518782015260408087015190820152845293840193928501926126d3565b50979650505050505050565b60006020828403121561273f57600080fd5b81518015158114611c4657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681810361279b5761279b61274f565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156128fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151610140612831858351805163ffffffff1682526020808201519083015260409081015167ffffffffffffffff16910152565b8882015160606128488188018363ffffffff169052565b89840151915060806128718189018473ffffffffffffffffffffffffffffffffffffffff169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e0906128b58289018473ffffffffffffffffffffffffffffffffffffffff169052565b840151610100880184905291506128ce878401836121eb565b9301518684036101208801529291506128e9905081836121eb565b9689019694505050908601906001016127ce565b509098975050505050505050565b6000825161291d8184602087016121c7565b9190910192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b168152600082516129648160048501602087016121c7565b919091016004019392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a3576129a361274f565b5060010190565b80820180821115611a2557611a2561274f565b6000602082840312156129cf57600080fd5b8151611c4681612574565b6000602082840312156129ec57600080fd5b8151611c4681612248565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156118995760049290920360031b82901b161692915050565b81810381811115611a2557611a2561274f565b600060208284031215612a6857600080fd5b815167ffffffffffffffff80821115612a8057600080fd5b818401915084601f830112612a9457600080fd5b815181811115612aa657612aa6612385565b612ad760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612601565b9150808252856020828501011115612aee57600080fd5b611ffe8160208401602086016121c7565b80356020831015611a25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156124b25760089490940360031b84901b169092169291505056fea2646970667358221220dbf4c7d68c5592cedd23318968acb241f27d4f79675b8735f13d0224635d310464736f6c63430008160033",
365
- "deployedBytecode": "0x6080604052600436106100dd5760003560e01c80638e9e70991161007f578063bf7b5d7a11610059578063bf7b5d7a1461028d578063f0cd3836146102c1578063f2fde38b146102e1578063f8bcddf61461030157600080fd5b80638e9e709914610236578063afea44ef1461024b578063b9a1f5e71461026b57600080fd5b806352ae2879116100bb57806352ae28791461017b57806354fd4d50146101d4578063715018a6146101f65780638da5cb5b1461020b57600080fd5b806310f9cf3a146100e25780632913daa01461010457806350dfa9371461015b575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046120c1565b610321565b005b34801561011057600080fd5b5060005461013d9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61016e61016936600461215b565b610539565b6040516101529190612235565b34801561018757600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101e057600080fd5b5060408051600281526000602082015201610152565b34801561020257600080fd5b506101026105d4565b34801561021757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101af565b34801561024257600080fd5b5061016e6105e8565b34801561025757600080fd5b5061010261026636600461225e565b610859565b34801561027757600080fd5b506102806108b4565b604051610152919061227b565b34801561029957600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd57600080fd5b5061016e6102dc36600461215b565b610933565b3480156102ed57600080fd5b506101026102fc3660046122da565b610bd0565b34801561030d57600080fd5b5061010261031c366004612310565b610c8c565b3361dead1461035c576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061039c8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b905060008267ffffffffffffffff8111156103b9576103b9612385565b6040519080825280602002602001820160405280156103e2578160200160208202803683370190505b50905060008367ffffffffffffffff81111561040057610400612385565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b8481101561051857366000878784818110610456576104566123b4565b905060200281019061046891906123e3565b909250905061047b600460008385612448565b61048491612472565b60e01c858481518110610499576104996123b4565b63ffffffff909216602092830291909101909101526104bb8160048185612448565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505086518792508691508110610503576105036123b4565b60209081029190910101525050600101610439565b506105238383610e6a565b61052e838383610f54565b505050505050505050565b60603361dead14610576576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105b68686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b90506105c1816110d2565b6105ca8161137d565b9695505050505050565b6105dc6114e4565b6105e66000611565565b565b6001546060907f000000000000000000000000000000000000000000000000000000000000000090819060009067ffffffffffffffff81111561062d5761062d612385565b60405190808252806020026020018201604052801561068857816020015b6106756040518060600160405280600063ffffffff16815260200160008152602001600081525090565b81526020019060019003908161064b5790505b50905060005b600154811015610830576000600182815481106106ad576106ad6123b4565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290517f56a4728900000000000000000000000000000000000000000000000000000000815260048101829052909350909182019073ffffffffffffffffffffffffffffffffffffffff8716906356a4728990602401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b91906124ba565b81526040517f622f17f600000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260209091019073ffffffffffffffffffffffffffffffffffffffff87169063622f17f690602401602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080791906124ba565b81525083838151811061081c5761081c6123b4565b60209081029190910101525060010161068e565b5080604051602001610842919061227b565b604051602081830303815290604052935050505090565b6108616114e4565b6000805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561092a5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108d8565b50505050905090565b60603361dead14610970576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517e0200000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166022820152602a01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060008515610a6557610a60610a5b8888888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b6115da565b610ade565b6001805480602002602001604051908101604052809291908181526020016000905b82821015610ad95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610a87565b505050505b805190915015610bc6578051604051610afd90849083906020016124d3565b604051602081830303815290604052925060005b8161ffff16811015610bc35783838281518110610b3057610b306123b4565b602002602001015160000151848381518110610b4e57610b4e6123b4565b602002602001015160200151858481518110610b6c57610b6c6123b4565b602002602001015160400151604051602001610b8b949392919061251d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529350600101610b11565b50505b5095945050505050565b610bd86114e4565b73ffffffffffffffffffffffffffffffffffffffff8116610c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c8981611565565b50565b610c946114e4565b610ca060016000612017565b60005b81811015610cf7576001838383818110610cbf57610cbf6123b4565b835460018101855560009485526020909420606090910292909201926003029091019050610ced8282612586565b5050600101610ca3565b505050565b60608267ffffffffffffffff811115610d1757610d17612385565b604051908082528060200260200182016040528015610dbd57816020015b604080516101608101825260006101008201818152610120830182905261014083018290528252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d355790505b50905060005b83811015610e6257366000868684818110610de057610de06123b4565b9050602002810190610df291906123e3565b91509150610e0082826118a1565b848481518110610e1257610e126123b4565b6020026020010181905250848381518110610e2f57610e2f6123b4565b6020026020010151848481518110610e4957610e496123b4565b6020908102919091010151608001525050600101610dc3565b509392505050565b815115610f00576000610e7c836115da565b905060005b8151811015610efd576000828281518110610e9e57610e9e6123b4565b6020026020010151600001519050610eb684826119d4565b610ef4576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b50600101610e81565b50505b6000610f0a611a2b565b9050610f1682826119d4565b610cf7576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b6000610f5e611a2b565b9050606060005b8451811015610fd6578263ffffffff16858281518110610f8757610f876123b4565b602002602001015163ffffffff1603610fce57838181518110610fac57610fac6123b4565b6020026020010151806020019051810190610fc79190612650565b9150610fd6565b600101610f65565b5060005b84518110156110ca576000858281518110610ff757610ff76123b4565b602002602001015190506000858381518110611015576110156123b4565b60200260200101518060200190518101906110309190612650565b9050600061103e8584611ac1565b509050600061104d8388611ac1565b915050808211156110ba576040517f1915975700000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c77565b505060019092019150610fda9050565b505050505050565b60005481517401000000000000000000000000000000000000000090910467ffffffffffffffff1610156111605760005481516040517f9db086050000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090920467ffffffffffffffff1660048301526024820152604401610c77565b805115610c895760008080805b845181101561137657600085828151811061118a5761118a6123b4565b602090810291909101810151805180519201516040517f5a0dfe4d00000000000000000000000000000000000000000000000000000000815263ffffffff9093166004840152602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635a0dfe4d90604401602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611259919061272d565b611263575061136e565b80515163ffffffff80871691161080611295575080515163ffffffff8681169116148015611295575080516020015184115b156112cc576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80515163ffffffff86811691161415806112eb57508051602001518414155b1561130c578051805160209091015190955093506113098585611b5e565b92505b6113158361277e565b92508267ffffffffffffffff1681600001516040015167ffffffffffffffff161461136c576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60010161116d565b5050505050565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163463bd815db060e01b866040516024016113d391906127a5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161145c919061290b565b60006040518083038185875af1925050503d8060008114611499576040519150601f19603f3d011682016040523d82523d6000602084013e61149e565b606091505b509150915060006114af8383611c4d565b90506114b9611a2b565b816040516020016114cb929190612927565b6040516020818303038152906040529350505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c77565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060006001805480602002602001604051908101604052809291908181526020016000905b828210156116525760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611600565b5050505090506000835167ffffffffffffffff81111561167457611674612385565b6040519080825280602002602001820160405280156116dd57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116925790505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b85518110156117af576000868281518110611721576117216123b4565b602002602001015160000151600001519050600061173f8683611d6c565b90506000811215801561175b575060006117598684611d6c565b125b156117a5578361176a81612972565b94505085818151811061177f5761177f6123b4565b6020026020010151858581518110611799576117996123b4565b60200260200101819052505b5050600101611704565b50600081126118995760006117c58260016129aa565b90508067ffffffffffffffff8111156117e0576117e0612385565b60405190808252806020026020018201604052801561184957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117fe5790505b50945060005b8181101561189657838181518110611869576118696123b4565b6020026020010151868281518110611883576118836123b4565b602090810291909101015260010161184f565b50505b505050919050565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260405180606001604052806119108585611de1565b63ffffffff1681526020016119258585611e04565b81526020016119348585611e1d565b67ffffffffffffffff169052815261194c8383611e40565b63ffffffff1660208201526119618383611e50565b73ffffffffffffffffffffffffffffffffffffffff1660408201526119868383611e62565b60608201526119958383611e72565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b8351811015611a1f578263ffffffff168482815181106119fa576119fa6123b4565b602002602001015163ffffffff1603611a17576001915050611a25565b6001016119d8565b50600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc91906129bd565b905090565b60008060005b8451811015611b4e578363ffffffff16858281518110611ae957611ae96123b4565b60200260200101516000015163ffffffff1603611b4657848181518110611b1257611b126123b4565b602002602001015160200151858281518110611b3057611b306123b4565b6020026020010151604001519250925050611b57565b600101611ac7565b50600080915091505b9250929050565b6040517fa0dd43fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4691906129da565b9392505050565b60608215611cb7576040517f614cbd8a00000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2072657665727400000000000000000000000000000000000000000000006044820152606401610c77565b7f8351eea700000000000000000000000000000000000000000000000000000000611ce1836129f7565b7fffffffff000000000000000000000000000000000000000000000000000000001614611d3c57816040517f614cbd8a000000000000000000000000000000000000000000000000000000008152600401610c779190612235565b611d566004808451611d4e9190612a43565b849190611e8d565b905080806020019051810190611c469190612a56565b6000805b8351811015611db8578263ffffffff16848281518110611d9257611d926123b4565b60200260200101516000015163ffffffff1603611db0579050611a25565b600101611d70565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b6000611df1600d60098486612448565b611dfa91612472565b60e01c9392505050565b6000611e14602d600d8486612448565b611c4691612aff565b6000611e2d600960018486612448565b611e3691612b3b565b60c01c9392505050565b6000611df16031602d8486612448565b6000611c46611e5f8484612007565b90565b6000611e14607160518486612448565b366000611e828360718187612448565b915091509250929050565b606081611e9b81601f6129aa565b1015611f03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610c77565b611f0d82846129aa565b84511015611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c77565b606082158015611f965760405191506000825260208201604052611ffe565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fcf578051835260209283019201611fb7565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000611e14605160318486612448565b5080546000825560030290600052602060002090810190610c8991905b808211156120785780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001681556000600182018190556002820155600301612034565b5090565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208260051b8501011115611b5757600080fd5b600080600080600080606087890312156120da57600080fd5b863567ffffffffffffffff808211156120f257600080fd5b6120fe8a838b0161207c565b9098509650602089013591508082111561211757600080fd5b6121238a838b0161207c565b9096509450604089013591508082111561213c57600080fd5b5061214989828a0161207c565b979a9699509497509295939492505050565b6000806000806040858703121561217157600080fd5b843567ffffffffffffffff8082111561218957600080fd5b6121958883890161207c565b909650945060208701359150808211156121ae57600080fd5b506121bb8782880161207c565b95989497509550505050565b60005b838110156121e25781810151838201526020016121ca565b50506000910152565b600081518084526122038160208601602086016121c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c4660208301846121eb565b67ffffffffffffffff81168114610c8957600080fd5b60006020828403121561227057600080fd5b8135611c4681612248565b602080825282518282018190526000919060409081850190868401855b828110156122cd578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101612298565b5091979650505050505050565b6000602082840312156122ec57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611c4657600080fd5b6000806020838503121561232357600080fd5b823567ffffffffffffffff8082111561233b57600080fd5b818501915085601f83011261234f57600080fd5b81358181111561235e57600080fd5b86602060608302850101111561237357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261241857600080fd5b83018035915067ffffffffffffffff82111561243357600080fd5b602001915036819003821315611b5757600080fd5b6000808585111561245857600080fd5b8386111561246557600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156124b25780818660040360031b1b83161692505b505092915050565b6000602082840312156124cc57600080fd5b5051919050565b600083516124e58184602088016121c7565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b6000855161252f818460208a016121c7565b60e09590951b7fffffffff0000000000000000000000000000000000000000000000000000000016919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c8957600080fd5b813561259181612574565b63ffffffff81167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008354161782555060208201356001820155604082013560028201555050565b6040516060810167ffffffffffffffff811182821017156125fb576125fb612385565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561264857612648612385565b604052919050565b6000602080838503121561266357600080fd5b825167ffffffffffffffff8082111561267b57600080fd5b818501915085601f83011261268f57600080fd5b8151818111156126a1576126a1612385565b6126af848260051b01612601565b818152848101925060609182028401850191888311156126ce57600080fd5b938501935b828510156127215780858a0312156126eb5760008081fd5b6126f36125d8565b85516126fe81612574565b8152858701518782015260408087015190820152845293840193928501926126d3565b50979650505050505050565b60006020828403121561273f57600080fd5b81518015158114611c4657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681810361279b5761279b61274f565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156128fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151610140612831858351805163ffffffff1682526020808201519083015260409081015167ffffffffffffffff16910152565b8882015160606128488188018363ffffffff169052565b89840151915060806128718189018473ffffffffffffffffffffffffffffffffffffffff169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e0906128b58289018473ffffffffffffffffffffffffffffffffffffffff169052565b840151610100880184905291506128ce878401836121eb565b9301518684036101208801529291506128e9905081836121eb565b9689019694505050908601906001016127ce565b509098975050505050505050565b6000825161291d8184602087016121c7565b9190910192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b168152600082516129648160048501602087016121c7565b919091016004019392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a3576129a361274f565b5060010190565b80820180821115611a2557611a2561274f565b6000602082840312156129cf57600080fd5b8151611c4681612574565b6000602082840312156129ec57600080fd5b8151611c4681612248565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156118995760049290920360031b82901b161692915050565b81810381811115611a2557611a2561274f565b600060208284031215612a6857600080fd5b815167ffffffffffffffff80821115612a8057600080fd5b818401915084601f830112612a9457600080fd5b815181811115612aa657612aa6612385565b612ad760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612601565b9150808252856020828501011115612aee57600080fd5b611ffe8160208401602086016121c7565b80356020831015611a25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156124b25760089490940360031b84901b169092169291505056fea2646970667358221220dbf4c7d68c5592cedd23318968acb241f27d4f79675b8735f13d0224635d310464736f6c63430008160033",
364
+ "bytecode": "0x60e06040523480156200001157600080fd5b5060405162002da338038062002da383398101604081905262000034916200013c565b81816200004133620000cf565b6001600160a01b03808316608052811660a0819052604080516352ae287960e01b815290516352ae2879916004808201926020929091908290030181865afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b8919062000174565b6001600160a01b031660c052506200019992505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013757600080fd5b919050565b600080604083850312156200015057600080fd5b6200015b836200011f565b91506200016b602084016200011f565b90509250929050565b6000602082840312156200018757600080fd5b62000192826200011f565b9392505050565b60805160a05160c051612bb7620001ec6000396000818161018d0152611b9b01526000818161029f015281816105f0015281816111d90152611384015260008181611a2f0152611bd90152612bb76000f3fe6080604052600436106100dd5760003560e01c80638e9e70991161007f578063bf7b5d7a11610059578063bf7b5d7a1461028d578063f0cd3836146102c1578063f2fde38b146102e1578063f8bcddf61461030157600080fd5b80638e9e709914610236578063afea44ef1461024b578063b9a1f5e71461026b57600080fd5b806352ae2879116100bb57806352ae28791461017b57806354fd4d50146101d4578063715018a6146101f65780638da5cb5b1461020b57600080fd5b806310f9cf3a146100e25780632913daa01461010457806350dfa9371461015b575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046120c1565b610321565b005b34801561011057600080fd5b5060005461013d9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61016e61016936600461215b565b610539565b6040516101529190612235565b34801561018757600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101e057600080fd5b5060408051600281526000602082015201610152565b34801561020257600080fd5b506101026105d4565b34801561021757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101af565b34801561024257600080fd5b5061016e6105e8565b34801561025757600080fd5b5061010261026636600461225e565b610859565b34801561027757600080fd5b506102806108b4565b604051610152919061227b565b34801561029957600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd57600080fd5b5061016e6102dc36600461215b565b610933565b3480156102ed57600080fd5b506101026102fc3660046122da565b610bd0565b34801561030d57600080fd5b5061010261031c366004612310565b610c8c565b3361dead1461035c576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061039c8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b905060008267ffffffffffffffff8111156103b9576103b9612385565b6040519080825280602002602001820160405280156103e2578160200160208202803683370190505b50905060008367ffffffffffffffff81111561040057610400612385565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b8481101561051857366000878784818110610456576104566123b4565b905060200281019061046891906123e3565b909250905061047b600460008385612448565b61048491612472565b60e01c858481518110610499576104996123b4565b63ffffffff909216602092830291909101909101526104bb8160048185612448565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505086518792508691508110610503576105036123b4565b60209081029190910101525050600101610439565b506105238383610e6a565b61052e838383610f54565b505050505050505050565b60603361dead14610576576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105b68686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b90506105c1816110d2565b6105ca8161137d565b9695505050505050565b6105dc6114e4565b6105e66000611565565b565b6001546060907f000000000000000000000000000000000000000000000000000000000000000090819060009067ffffffffffffffff81111561062d5761062d612385565b60405190808252806020026020018201604052801561068857816020015b6106756040518060600160405280600063ffffffff16815260200160008152602001600081525090565b81526020019060019003908161064b5790505b50905060005b600154811015610830576000600182815481106106ad576106ad6123b4565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290517f56a4728900000000000000000000000000000000000000000000000000000000815260048101829052909350909182019073ffffffffffffffffffffffffffffffffffffffff8716906356a4728990602401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b91906124ba565b81526040517f622f17f600000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260209091019073ffffffffffffffffffffffffffffffffffffffff87169063622f17f690602401602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080791906124ba565b81525083838151811061081c5761081c6123b4565b60209081029190910101525060010161068e565b5080604051602001610842919061227b565b604051602081830303815290604052935050505090565b6108616114e4565b6000805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561092a5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108d8565b50505050905090565b60603361dead14610970576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517e0200000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166022820152602a01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060008515610a6557610a60610a5b8888888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b6115da565b610ade565b6001805480602002602001604051908101604052809291908181526020016000905b82821015610ad95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610a87565b505050505b805190915015610bc6578051604051610afd90849083906020016124d3565b604051602081830303815290604052925060005b8161ffff16811015610bc35783838281518110610b3057610b306123b4565b602002602001015160000151848381518110610b4e57610b4e6123b4565b602002602001015160200151858481518110610b6c57610b6c6123b4565b602002602001015160400151604051602001610b8b949392919061251d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529350600101610b11565b50505b5095945050505050565b610bd86114e4565b73ffffffffffffffffffffffffffffffffffffffff8116610c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c8981611565565b50565b610c946114e4565b610ca060016000612017565b60005b81811015610cf7576001838383818110610cbf57610cbf6123b4565b835460018101855560009485526020909420606090910292909201926003029091019050610ced8282612586565b5050600101610ca3565b505050565b60608267ffffffffffffffff811115610d1757610d17612385565b604051908082528060200260200182016040528015610dbd57816020015b604080516101608101825260006101008201818152610120830182905261014083018290528252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d355790505b50905060005b83811015610e6257366000868684818110610de057610de06123b4565b9050602002810190610df291906123e3565b91509150610e0082826118a1565b848481518110610e1257610e126123b4565b6020026020010181905250848381518110610e2f57610e2f6123b4565b6020026020010151848481518110610e4957610e496123b4565b6020908102919091010151608001525050600101610dc3565b509392505050565b815115610f00576000610e7c836115da565b905060005b8151811015610efd576000828281518110610e9e57610e9e6123b4565b6020026020010151600001519050610eb684826119d4565b610ef4576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b50600101610e81565b50505b6000610f0a611a2b565b9050610f1682826119d4565b610cf7576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b6000610f5e611a2b565b9050606060005b8451811015610fd6578263ffffffff16858281518110610f8757610f876123b4565b602002602001015163ffffffff1603610fce57838181518110610fac57610fac6123b4565b6020026020010151806020019051810190610fc79190612650565b9150610fd6565b600101610f65565b5060005b84518110156110ca576000858281518110610ff757610ff76123b4565b602002602001015190506000858381518110611015576110156123b4565b60200260200101518060200190518101906110309190612650565b9050600061103e8584611ac1565b509050600061104d8388611ac1565b915050808211156110ba576040517f1915975700000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c77565b505060019092019150610fda9050565b505050505050565b60005481517401000000000000000000000000000000000000000090910467ffffffffffffffff1610156111605760005481516040517f9db086050000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090920467ffffffffffffffff1660048301526024820152604401610c77565b805115610c895760008080805b845181101561137657600085828151811061118a5761118a6123b4565b602090810291909101810151805180519201516040517f5a0dfe4d00000000000000000000000000000000000000000000000000000000815263ffffffff9093166004840152602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635a0dfe4d90604401602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611259919061272d565b611263575061136e565b80515163ffffffff80871691161080611295575080515163ffffffff8681169116148015611295575080516020015184115b156112cc576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80515163ffffffff86811691161415806112eb57508051602001518414155b1561130c578051805160209091015190955093506113098585611b5e565b92505b6113158361277e565b92508267ffffffffffffffff1681600001516040015167ffffffffffffffff161461136c576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60010161116d565b5050505050565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163463bd815db060e01b866040516024016113d391906127a5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161145c919061290b565b60006040518083038185875af1925050503d8060008114611499576040519150601f19603f3d011682016040523d82523d6000602084013e61149e565b606091505b509150915060006114af8383611c4d565b90506114b9611a2b565b816040516020016114cb929190612927565b6040516020818303038152906040529350505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c77565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060006001805480602002602001604051908101604052809291908181526020016000905b828210156116525760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611600565b5050505090506000835167ffffffffffffffff81111561167457611674612385565b6040519080825280602002602001820160405280156116dd57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116925790505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b85518110156117af576000868281518110611721576117216123b4565b602002602001015160000151600001519050600061173f8683611d6c565b90506000811215801561175b575060006117598684611d6c565b125b156117a5578361176a81612972565b94505085818151811061177f5761177f6123b4565b6020026020010151858581518110611799576117996123b4565b60200260200101819052505b5050600101611704565b50600081126118995760006117c58260016129aa565b90508067ffffffffffffffff8111156117e0576117e0612385565b60405190808252806020026020018201604052801561184957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117fe5790505b50945060005b8181101561189657838181518110611869576118696123b4565b6020026020010151868281518110611883576118836123b4565b602090810291909101015260010161184f565b50505b505050919050565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260405180606001604052806119108585611de1565b63ffffffff1681526020016119258585611e04565b81526020016119348585611e1d565b67ffffffffffffffff169052815261194c8383611e40565b63ffffffff1660208201526119618383611e50565b73ffffffffffffffffffffffffffffffffffffffff1660408201526119868383611e62565b60608201526119958383611e72565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b8351811015611a1f578263ffffffff168482815181106119fa576119fa6123b4565b602002602001015163ffffffff1603611a17576001915050611a25565b6001016119d8565b50600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc91906129bd565b905090565b60008060005b8451811015611b4e578363ffffffff16858281518110611ae957611ae96123b4565b60200260200101516000015163ffffffff1603611b4657848181518110611b1257611b126123b4565b602002602001015160200151858281518110611b3057611b306123b4565b6020026020010151604001519250925050611b57565b600101611ac7565b50600080915091505b9250929050565b6040517fa0dd43fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4691906129da565b9392505050565b60608215611cb7576040517f614cbd8a00000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2072657665727400000000000000000000000000000000000000000000006044820152606401610c77565b7f8351eea700000000000000000000000000000000000000000000000000000000611ce1836129f7565b7fffffffff000000000000000000000000000000000000000000000000000000001614611d3c57816040517f614cbd8a000000000000000000000000000000000000000000000000000000008152600401610c779190612235565b611d566004808451611d4e9190612a43565b849190611e8d565b905080806020019051810190611c469190612a56565b6000805b8351811015611db8578263ffffffff16848281518110611d9257611d926123b4565b60200260200101516000015163ffffffff1603611db0579050611a25565b600101611d70565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b6000611df1600d60098486612448565b611dfa91612472565b60e01c9392505050565b6000611e14602d600d8486612448565b611c4691612aff565b6000611e2d600960018486612448565b611e3691612b3b565b60c01c9392505050565b6000611df16031602d8486612448565b6000611c46611e5f8484612007565b90565b6000611e14607160518486612448565b366000611e828360718187612448565b915091509250929050565b606081611e9b81601f6129aa565b1015611f03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610c77565b611f0d82846129aa565b84511015611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c77565b606082158015611f965760405191506000825260208201604052611ffe565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fcf578051835260209283019201611fb7565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000611e14605160318486612448565b5080546000825560030290600052602060002090810190610c8991905b808211156120785780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001681556000600182018190556002820155600301612034565b5090565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208260051b8501011115611b5757600080fd5b600080600080600080606087890312156120da57600080fd5b863567ffffffffffffffff808211156120f257600080fd5b6120fe8a838b0161207c565b9098509650602089013591508082111561211757600080fd5b6121238a838b0161207c565b9096509450604089013591508082111561213c57600080fd5b5061214989828a0161207c565b979a9699509497509295939492505050565b6000806000806040858703121561217157600080fd5b843567ffffffffffffffff8082111561218957600080fd5b6121958883890161207c565b909650945060208701359150808211156121ae57600080fd5b506121bb8782880161207c565b95989497509550505050565b60005b838110156121e25781810151838201526020016121ca565b50506000910152565b600081518084526122038160208601602086016121c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c4660208301846121eb565b67ffffffffffffffff81168114610c8957600080fd5b60006020828403121561227057600080fd5b8135611c4681612248565b602080825282518282018190526000919060409081850190868401855b828110156122cd578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101612298565b5091979650505050505050565b6000602082840312156122ec57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611c4657600080fd5b6000806020838503121561232357600080fd5b823567ffffffffffffffff8082111561233b57600080fd5b818501915085601f83011261234f57600080fd5b81358181111561235e57600080fd5b86602060608302850101111561237357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261241857600080fd5b83018035915067ffffffffffffffff82111561243357600080fd5b602001915036819003821315611b5757600080fd5b6000808585111561245857600080fd5b8386111561246557600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156124b25780818660040360031b1b83161692505b505092915050565b6000602082840312156124cc57600080fd5b5051919050565b600083516124e58184602088016121c7565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b6000855161252f818460208a016121c7565b60e09590951b7fffffffff0000000000000000000000000000000000000000000000000000000016919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c8957600080fd5b813561259181612574565b63ffffffff81167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008354161782555060208201356001820155604082013560028201555050565b6040516060810167ffffffffffffffff811182821017156125fb576125fb612385565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561264857612648612385565b604052919050565b6000602080838503121561266357600080fd5b825167ffffffffffffffff8082111561267b57600080fd5b818501915085601f83011261268f57600080fd5b8151818111156126a1576126a1612385565b6126af848260051b01612601565b818152848101925060609182028401850191888311156126ce57600080fd5b938501935b828510156127215780858a0312156126eb5760008081fd5b6126f36125d8565b85516126fe81612574565b8152858701518782015260408087015190820152845293840193928501926126d3565b50979650505050505050565b60006020828403121561273f57600080fd5b81518015158114611c4657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681810361279b5761279b61274f565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156128fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151610140612831858351805163ffffffff1682526020808201519083015260409081015167ffffffffffffffff16910152565b8882015160606128488188018363ffffffff169052565b89840151915060806128718189018473ffffffffffffffffffffffffffffffffffffffff169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e0906128b58289018473ffffffffffffffffffffffffffffffffffffffff169052565b840151610100880184905291506128ce878401836121eb565b9301518684036101208801529291506128e9905081836121eb565b9689019694505050908601906001016127ce565b509098975050505050505050565b6000825161291d8184602087016121c7565b9190910192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b168152600082516129648160048501602087016121c7565b919091016004019392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a3576129a361274f565b5060010190565b80820180821115611a2557611a2561274f565b6000602082840312156129cf57600080fd5b8151611c4681612574565b6000602082840312156129ec57600080fd5b8151611c4681612248565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156118995760049290920360031b82901b161692915050565b81810381811115611a2557611a2561274f565b600060208284031215612a6857600080fd5b815167ffffffffffffffff80821115612a8057600080fd5b818401915084601f830112612a9457600080fd5b815181811115612aa657612aa6612385565b612ad760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612601565b9150808252856020828501011115612aee57600080fd5b611ffe8160208401602086016121c7565b80356020831015611a25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156124b25760089490940360031b84901b169092169291505056fea26469706673582212202fa14dd6aaeca31e34e8221b0e8b9ba3a2298ea3e45849a3f743d34a5a51a68664736f6c63430008160033",
365
+ "deployedBytecode": "0x6080604052600436106100dd5760003560e01c80638e9e70991161007f578063bf7b5d7a11610059578063bf7b5d7a1461028d578063f0cd3836146102c1578063f2fde38b146102e1578063f8bcddf61461030157600080fd5b80638e9e709914610236578063afea44ef1461024b578063b9a1f5e71461026b57600080fd5b806352ae2879116100bb57806352ae28791461017b57806354fd4d50146101d4578063715018a6146101f65780638da5cb5b1461020b57600080fd5b806310f9cf3a146100e25780632913daa01461010457806350dfa9371461015b575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046120c1565b610321565b005b34801561011057600080fd5b5060005461013d9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61016e61016936600461215b565b610539565b6040516101529190612235565b34801561018757600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101e057600080fd5b5060408051600281526000602082015201610152565b34801561020257600080fd5b506101026105d4565b34801561021757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101af565b34801561024257600080fd5b5061016e6105e8565b34801561025757600080fd5b5061010261026636600461225e565b610859565b34801561027757600080fd5b506102806108b4565b604051610152919061227b565b34801561029957600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd57600080fd5b5061016e6102dc36600461215b565b610933565b3480156102ed57600080fd5b506101026102fc3660046122da565b610bd0565b34801561030d57600080fd5b5061010261031c366004612310565b610c8c565b3361dead1461035c576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061039c8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b905060008267ffffffffffffffff8111156103b9576103b9612385565b6040519080825280602002602001820160405280156103e2578160200160208202803683370190505b50905060008367ffffffffffffffff81111561040057610400612385565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b8481101561051857366000878784818110610456576104566123b4565b905060200281019061046891906123e3565b909250905061047b600460008385612448565b61048491612472565b60e01c858481518110610499576104996123b4565b63ffffffff909216602092830291909101909101526104bb8160048185612448565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505086518792508691508110610503576105036123b4565b60209081029190910101525050600101610439565b506105238383610e6a565b61052e838383610f54565b505050505050505050565b60603361dead14610576576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105b68686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b90506105c1816110d2565b6105ca8161137d565b9695505050505050565b6105dc6114e4565b6105e66000611565565b565b6001546060907f000000000000000000000000000000000000000000000000000000000000000090819060009067ffffffffffffffff81111561062d5761062d612385565b60405190808252806020026020018201604052801561068857816020015b6106756040518060600160405280600063ffffffff16815260200160008152602001600081525090565b81526020019060019003908161064b5790505b50905060005b600154811015610830576000600182815481106106ad576106ad6123b4565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290517f56a4728900000000000000000000000000000000000000000000000000000000815260048101829052909350909182019073ffffffffffffffffffffffffffffffffffffffff8716906356a4728990602401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b91906124ba565b81526040517f622f17f600000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260209091019073ffffffffffffffffffffffffffffffffffffffff87169063622f17f690602401602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080791906124ba565b81525083838151811061081c5761081c6123b4565b60209081029190910101525060010161068e565b5080604051602001610842919061227b565b604051602081830303815290604052935050505090565b6108616114e4565b6000805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561092a5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108d8565b50505050905090565b60603361dead14610970576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517e0200000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166022820152602a01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060008515610a6557610a60610a5b8888888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b6115da565b610ade565b6001805480602002602001604051908101604052809291908181526020016000905b82821015610ad95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610a87565b505050505b805190915015610bc6578051604051610afd90849083906020016124d3565b604051602081830303815290604052925060005b8161ffff16811015610bc35783838281518110610b3057610b306123b4565b602002602001015160000151848381518110610b4e57610b4e6123b4565b602002602001015160200151858481518110610b6c57610b6c6123b4565b602002602001015160400151604051602001610b8b949392919061251d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529350600101610b11565b50505b5095945050505050565b610bd86114e4565b73ffffffffffffffffffffffffffffffffffffffff8116610c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c8981611565565b50565b610c946114e4565b610ca060016000612017565b60005b81811015610cf7576001838383818110610cbf57610cbf6123b4565b835460018101855560009485526020909420606090910292909201926003029091019050610ced8282612586565b5050600101610ca3565b505050565b60608267ffffffffffffffff811115610d1757610d17612385565b604051908082528060200260200182016040528015610dbd57816020015b604080516101608101825260006101008201818152610120830182905261014083018290528252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d355790505b50905060005b83811015610e6257366000868684818110610de057610de06123b4565b9050602002810190610df291906123e3565b91509150610e0082826118a1565b848481518110610e1257610e126123b4565b6020026020010181905250848381518110610e2f57610e2f6123b4565b6020026020010151848481518110610e4957610e496123b4565b6020908102919091010151608001525050600101610dc3565b509392505050565b815115610f00576000610e7c836115da565b905060005b8151811015610efd576000828281518110610e9e57610e9e6123b4565b6020026020010151600001519050610eb684826119d4565b610ef4576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b50600101610e81565b50505b6000610f0a611a2b565b9050610f1682826119d4565b610cf7576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b6000610f5e611a2b565b9050606060005b8451811015610fd6578263ffffffff16858281518110610f8757610f876123b4565b602002602001015163ffffffff1603610fce57838181518110610fac57610fac6123b4565b6020026020010151806020019051810190610fc79190612650565b9150610fd6565b600101610f65565b5060005b84518110156110ca576000858281518110610ff757610ff76123b4565b602002602001015190506000858381518110611015576110156123b4565b60200260200101518060200190518101906110309190612650565b9050600061103e8584611ac1565b509050600061104d8388611ac1565b915050808211156110ba576040517f1915975700000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c77565b505060019092019150610fda9050565b505050505050565b60005481517401000000000000000000000000000000000000000090910467ffffffffffffffff1610156111605760005481516040517f9db086050000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090920467ffffffffffffffff1660048301526024820152604401610c77565b805115610c895760008080805b845181101561137657600085828151811061118a5761118a6123b4565b602090810291909101810151805180519201516040517f5a0dfe4d00000000000000000000000000000000000000000000000000000000815263ffffffff9093166004840152602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635a0dfe4d90604401602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611259919061272d565b611263575061136e565b80515163ffffffff80871691161080611295575080515163ffffffff8681169116148015611295575080516020015184115b156112cc576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80515163ffffffff86811691161415806112eb57508051602001518414155b1561130c578051805160209091015190955093506113098585611b5e565b92505b6113158361277e565b92508267ffffffffffffffff1681600001516040015167ffffffffffffffff161461136c576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60010161116d565b5050505050565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163463bd815db060e01b866040516024016113d391906127a5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161145c919061290b565b60006040518083038185875af1925050503d8060008114611499576040519150601f19603f3d011682016040523d82523d6000602084013e61149e565b606091505b509150915060006114af8383611c4d565b90506114b9611a2b565b816040516020016114cb929190612927565b6040516020818303038152906040529350505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c77565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060006001805480602002602001604051908101604052809291908181526020016000905b828210156116525760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611600565b5050505090506000835167ffffffffffffffff81111561167457611674612385565b6040519080825280602002602001820160405280156116dd57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116925790505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b85518110156117af576000868281518110611721576117216123b4565b602002602001015160000151600001519050600061173f8683611d6c565b90506000811215801561175b575060006117598684611d6c565b125b156117a5578361176a81612972565b94505085818151811061177f5761177f6123b4565b6020026020010151858581518110611799576117996123b4565b60200260200101819052505b5050600101611704565b50600081126118995760006117c58260016129aa565b90508067ffffffffffffffff8111156117e0576117e0612385565b60405190808252806020026020018201604052801561184957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117fe5790505b50945060005b8181101561189657838181518110611869576118696123b4565b6020026020010151868281518110611883576118836123b4565b602090810291909101015260010161184f565b50505b505050919050565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260405180606001604052806119108585611de1565b63ffffffff1681526020016119258585611e04565b81526020016119348585611e1d565b67ffffffffffffffff169052815261194c8383611e40565b63ffffffff1660208201526119618383611e50565b73ffffffffffffffffffffffffffffffffffffffff1660408201526119868383611e62565b60608201526119958383611e72565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b8351811015611a1f578263ffffffff168482815181106119fa576119fa6123b4565b602002602001015163ffffffff1603611a17576001915050611a25565b6001016119d8565b50600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc91906129bd565b905090565b60008060005b8451811015611b4e578363ffffffff16858281518110611ae957611ae96123b4565b60200260200101516000015163ffffffff1603611b4657848181518110611b1257611b126123b4565b602002602001015160200151858281518110611b3057611b306123b4565b6020026020010151604001519250925050611b57565b600101611ac7565b50600080915091505b9250929050565b6040517fa0dd43fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4691906129da565b9392505050565b60608215611cb7576040517f614cbd8a00000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2072657665727400000000000000000000000000000000000000000000006044820152606401610c77565b7f8351eea700000000000000000000000000000000000000000000000000000000611ce1836129f7565b7fffffffff000000000000000000000000000000000000000000000000000000001614611d3c57816040517f614cbd8a000000000000000000000000000000000000000000000000000000008152600401610c779190612235565b611d566004808451611d4e9190612a43565b849190611e8d565b905080806020019051810190611c469190612a56565b6000805b8351811015611db8578263ffffffff16848281518110611d9257611d926123b4565b60200260200101516000015163ffffffff1603611db0579050611a25565b600101611d70565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b6000611df1600d60098486612448565b611dfa91612472565b60e01c9392505050565b6000611e14602d600d8486612448565b611c4691612aff565b6000611e2d600960018486612448565b611e3691612b3b565b60c01c9392505050565b6000611df16031602d8486612448565b6000611c46611e5f8484612007565b90565b6000611e14607160518486612448565b366000611e828360718187612448565b915091509250929050565b606081611e9b81601f6129aa565b1015611f03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610c77565b611f0d82846129aa565b84511015611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c77565b606082158015611f965760405191506000825260208201604052611ffe565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fcf578051835260209283019201611fb7565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000611e14605160318486612448565b5080546000825560030290600052602060002090810190610c8991905b808211156120785780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001681556000600182018190556002820155600301612034565b5090565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208260051b8501011115611b5757600080fd5b600080600080600080606087890312156120da57600080fd5b863567ffffffffffffffff808211156120f257600080fd5b6120fe8a838b0161207c565b9098509650602089013591508082111561211757600080fd5b6121238a838b0161207c565b9096509450604089013591508082111561213c57600080fd5b5061214989828a0161207c565b979a9699509497509295939492505050565b6000806000806040858703121561217157600080fd5b843567ffffffffffffffff8082111561218957600080fd5b6121958883890161207c565b909650945060208701359150808211156121ae57600080fd5b506121bb8782880161207c565b95989497509550505050565b60005b838110156121e25781810151838201526020016121ca565b50506000910152565b600081518084526122038160208601602086016121c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c4660208301846121eb565b67ffffffffffffffff81168114610c8957600080fd5b60006020828403121561227057600080fd5b8135611c4681612248565b602080825282518282018190526000919060409081850190868401855b828110156122cd578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101612298565b5091979650505050505050565b6000602082840312156122ec57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611c4657600080fd5b6000806020838503121561232357600080fd5b823567ffffffffffffffff8082111561233b57600080fd5b818501915085601f83011261234f57600080fd5b81358181111561235e57600080fd5b86602060608302850101111561237357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261241857600080fd5b83018035915067ffffffffffffffff82111561243357600080fd5b602001915036819003821315611b5757600080fd5b6000808585111561245857600080fd5b8386111561246557600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156124b25780818660040360031b1b83161692505b505092915050565b6000602082840312156124cc57600080fd5b5051919050565b600083516124e58184602088016121c7565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b6000855161252f818460208a016121c7565b60e09590951b7fffffffff0000000000000000000000000000000000000000000000000000000016919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c8957600080fd5b813561259181612574565b63ffffffff81167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008354161782555060208201356001820155604082013560028201555050565b6040516060810167ffffffffffffffff811182821017156125fb576125fb612385565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561264857612648612385565b604052919050565b6000602080838503121561266357600080fd5b825167ffffffffffffffff8082111561267b57600080fd5b818501915085601f83011261268f57600080fd5b8151818111156126a1576126a1612385565b6126af848260051b01612601565b818152848101925060609182028401850191888311156126ce57600080fd5b938501935b828510156127215780858a0312156126eb5760008081fd5b6126f36125d8565b85516126fe81612574565b8152858701518782015260408087015190820152845293840193928501926126d3565b50979650505050505050565b60006020828403121561273f57600080fd5b81518015158114611c4657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681810361279b5761279b61274f565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156128fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151610140612831858351805163ffffffff1682526020808201519083015260409081015167ffffffffffffffff16910152565b8882015160606128488188018363ffffffff169052565b89840151915060806128718189018473ffffffffffffffffffffffffffffffffffffffff169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e0906128b58289018473ffffffffffffffffffffffffffffffffffffffff169052565b840151610100880184905291506128ce878401836121eb565b9301518684036101208801529291506128e9905081836121eb565b9689019694505050908601906001016127ce565b509098975050505050505050565b6000825161291d8184602087016121c7565b9190910192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b168152600082516129648160048501602087016121c7565b919091016004019392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a3576129a361274f565b5060010190565b80820180821115611a2557611a2561274f565b6000602082840312156129cf57600080fd5b8151611c4681612574565b6000602082840312156129ec57600080fd5b8151611c4681612248565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156118995760049290920360031b82901b161692915050565b81810381811115611a2557611a2561274f565b600060208284031215612a6857600080fd5b815167ffffffffffffffff80821115612a8057600080fd5b818401915084601f830112612a9457600080fd5b815181811115612aa657612aa6612385565b612ad760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612601565b9150808252856020828501011115612aee57600080fd5b611ffe8160208401602086016121c7565b80356020831015611a25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156124b25760089490940360031b84901b169092169291505056fea26469706673582212202fa14dd6aaeca31e34e8221b0e8b9ba3a2298ea3e45849a3f743d34a5a51a68664736f6c63430008160033",
366
366
  "linkReferences": {},
367
367
  "deployedLinkReferences": {}
368
368
  }
@@ -0,0 +1,35 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "IOAppComputerMap",
4
+ "sourceName": "contracts/oapp/interfaces/IOAppComputerMap.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "bytes",
10
+ "name": "_request",
11
+ "type": "bytes"
12
+ },
13
+ {
14
+ "internalType": "bytes",
15
+ "name": "_response",
16
+ "type": "bytes"
17
+ }
18
+ ],
19
+ "name": "lzMap",
20
+ "outputs": [
21
+ {
22
+ "internalType": "bytes",
23
+ "name": "",
24
+ "type": "bytes"
25
+ }
26
+ ],
27
+ "stateMutability": "view",
28
+ "type": "function"
29
+ }
30
+ ],
31
+ "bytecode": "0x",
32
+ "deployedBytecode": "0x",
33
+ "linkReferences": {},
34
+ "deployedLinkReferences": {}
35
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "IOAppComputerReduce",
4
+ "sourceName": "contracts/oapp/interfaces/IOAppComputerReduce.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "bytes",
10
+ "name": "_cmd",
11
+ "type": "bytes"
12
+ },
13
+ {
14
+ "internalType": "bytes[]",
15
+ "name": "_responses",
16
+ "type": "bytes[]"
17
+ }
18
+ ],
19
+ "name": "lzReduce",
20
+ "outputs": [
21
+ {
22
+ "internalType": "bytes",
23
+ "name": "",
24
+ "type": "bytes"
25
+ }
26
+ ],
27
+ "stateMutability": "view",
28
+ "type": "function"
29
+ }
30
+ ],
31
+ "bytecode": "0x",
32
+ "deployedBytecode": "0x",
33
+ "linkReferences": {},
34
+ "deployedLinkReferences": {}
35
+ }
@@ -31,8 +31,8 @@
31
31
  "type": "error"
32
32
  }
33
33
  ],
34
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e74edfa13f8d3cde19ecb3c92d48dbda7452e87cddfff512372c3ea5e00d82c064736f6c63430008160033",
35
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e74edfa13f8d3cde19ecb3c92d48dbda7452e87cddfff512372c3ea5e00d82c064736f6c63430008160033",
34
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220926ab742de4319c2eec30eb50c1825a3cd6f343ea2d2f3657d7770b75aa0220f64736f6c63430008160033",
35
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220926ab742de4319c2eec30eb50c1825a3cd6f343ea2d2f3657d7770b75aa0220f64736f6c63430008160033",
36
36
  "linkReferences": {},
37
37
  "deployedLinkReferences": {}
38
38
  }
@@ -2,8 +2,7 @@
2
2
 
3
3
  pragma solidity ^0.8.20;
4
4
 
5
- interface IOAppComputer {
6
- function lzMap(bytes calldata _request, bytes calldata _response) external view returns (bytes memory);
5
+ import { IOAppComputerReduce } from "./IOAppComputerReduce.sol";
6
+ import { IOAppComputerMap } from "./IOAppComputerMap.sol";
7
7
 
8
- function lzReduce(bytes calldata _cmd, bytes[] calldata _responses) external view returns (bytes memory);
9
- }
8
+ interface IOAppComputer is IOAppComputerMap, IOAppComputerReduce {}
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.20;
4
+
5
+ interface IOAppComputerMap {
6
+ function lzMap(bytes calldata _request, bytes calldata _response) external view returns (bytes memory);
7
+ }
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity ^0.8.20;
4
+
5
+ interface IOAppComputerReduce {
6
+ function lzReduce(bytes calldata _cmd, bytes[] calldata _responses) external view returns (bytes memory);
7
+ }
@@ -5,7 +5,7 @@ pragma solidity ^0.8.20;
5
5
  import { BytesLib } from "solidity-bytes-utils/contracts/BytesLib.sol";
6
6
  import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
7
7
 
8
- import { ExecutorOptions } from "@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol";
8
+ import { ExecutorOptions } from "@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/ExecutorOptions.sol";
9
9
  import { DVNOptions } from "@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol";
10
10
 
11
11
  /**
@@ -59,6 +59,24 @@ library OptionsBuilder {
59
59
  return addExecutorOption(_options, ExecutorOptions.OPTION_TYPE_LZRECEIVE, option);
60
60
  }
61
61
 
62
+ /**
63
+ * @dev Adds an executor LZ read option to the existing options.
64
+ * @param _options The existing options container.
65
+ * @param _gas The gas limit used for the lzReceive() function in the ReadOApp.
66
+ * @param _calldataSize The size of the payload for lzReceive() function in the ReadOApp.
67
+ * @param _value The msg.value passed to the lzReceive() function in the ReadOApp.
68
+ * @return options The updated options container.
69
+ */
70
+ function addExecutorLzReadOption(
71
+ bytes memory _options,
72
+ uint128 _gas,
73
+ uint32 _calldataSize,
74
+ uint128 _value
75
+ ) internal pure onlyType3(_options) returns (bytes memory) {
76
+ bytes memory option = ExecutorOptions.encodeLzReadOption(_gas, _calldataSize, _value);
77
+ return addExecutorOption(_options, ExecutorOptions.OPTION_TYPE_LZREAD, option);
78
+ }
79
+
62
80
  /**
63
81
  * @dev Adds an executor native drop option to the existing options.
64
82
  * @param _options The existing options container.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/lz-evm-oapp-v2",
3
- "version": "3.0.31",
3
+ "version": "3.0.32",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "artifacts/contracts/**/!(*.dbg).json",
@@ -11,9 +11,9 @@
11
11
  },
12
12
  "dependencies": {},
13
13
  "devDependencies": {
14
- "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.31",
15
- "@layerzerolabs/lz-evm-protocol-v2": "^3.0.31",
16
- "@layerzerolabs/lz-evm-v1-0.7": "^3.0.31",
14
+ "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.32",
15
+ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.32",
16
+ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.32",
17
17
  "@openzeppelin/contracts": "^4.8.1",
18
18
  "@openzeppelin/contracts-upgradeable": "^4.8.1",
19
19
  "hardhat-deploy": "^0.12.4",
@@ -21,9 +21,9 @@
21
21
  "solidity-bytes-utils": "^0.8.0"
22
22
  },
23
23
  "peerDependencies": {
24
- "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.31",
25
- "@layerzerolabs/lz-evm-protocol-v2": "^3.0.31",
26
- "@layerzerolabs/lz-evm-v1-0.7": "^3.0.31",
24
+ "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.32",
25
+ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.32",
26
+ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.32",
27
27
  "@openzeppelin/contracts": "^4.8.1 || ^5.0.0",
28
28
  "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0",
29
29
  "hardhat-deploy": "^0.12.4",