@towns-protocol/generated 0.0.282 → 0.0.284

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.
Files changed (30) hide show
  1. package/dev/abis/DropFacet.abi.json +5 -0
  2. package/dev/abis/DropFacet.abi.ts +5 -0
  3. package/dev/abis/ISwapFacet.abi.json +22 -5
  4. package/dev/abis/ISwapFacet.abi.ts +22 -5
  5. package/dev/abis/ISwapRouter.abi.json +37 -8
  6. package/dev/abis/ISwapRouter.abi.ts +37 -8
  7. package/dev/abis/ISwapRouterBase.abi.json +5 -0
  8. package/dev/abis/ISwapRouterBase.abi.ts +5 -0
  9. package/dev/abis/MembershipFacet.abi.json +23 -0
  10. package/dev/abis/MembershipFacet.abi.ts +23 -0
  11. package/dev/abis/SimpleApp.abi.json +65 -0
  12. package/dev/abis/SimpleApp.abi.ts +65 -0
  13. package/dev/typings/ISwapFacet.ts +18 -8
  14. package/dev/typings/ISwapRouter.ts +25 -15
  15. package/dev/typings/MembershipFacet.ts +51 -8
  16. package/dev/typings/SimpleApp.ts +79 -0
  17. package/dev/typings/factories/DropFacet__factory.ts +6 -1
  18. package/dev/typings/factories/IDropFacet__factory.ts +5 -0
  19. package/dev/typings/factories/ISwapFacet__factory.ts +22 -5
  20. package/dev/typings/factories/ISwapRouter__factory.ts +37 -8
  21. package/dev/typings/factories/Member__factory.ts +1 -1
  22. package/dev/typings/factories/MembershipFacet__factory.ts +24 -1
  23. package/dev/typings/factories/MockLegacyArchitect__factory.ts +1 -1
  24. package/dev/typings/factories/SimpleApp__factory.ts +66 -1
  25. package/dev/typings/factories/UserEntitlement__factory.ts +1 -1
  26. package/dev/typings/factories/multichain/Towns__factory.ts +1677 -0
  27. package/dev/typings/factories/multichain/index.ts +4 -0
  28. package/dev/typings/multichain/Towns.ts +1731 -0
  29. package/dev/typings/multichain/index.ts +4 -0
  30. package/package.json +9 -9
@@ -810,7 +810,7 @@ const _abi = [
810
810
  ] as const;
811
811
 
812
812
  const _bytecode =
813
- "0x60a060405234801561000f575f5ffd5b506040516124eb3803806124eb83398101604081905261002e91610193565b3384845f61003c83826102ae565b50600161004982826102ae565b5050506001600160a01b03811661007957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610082816100a5565b50600761008f83826102ae565b5060805250506009805460ff1916905550610368565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610119575f5ffd5b81516001600160401b03811115610132576101326100f6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610160576101606100f6565b604052818152838201602001851015610177575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101a6575f5ffd5b84516001600160401b038111156101bb575f5ffd5b6101c78782880161010a565b602087015190955090506001600160401b038111156101e4575f5ffd5b6101f08782880161010a565b604087015190945090506001600160401b0381111561020d575f5ffd5b6102198782880161010a565b606096909601519497939650505050565b600181811c9082168061023e57607f821691505b60208210810361025c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102a957805f5260205f20601f840160051c810160208510156102875750805b601f840160051c820191505b818110156102a6575f8155600101610293565b50505b505050565b81516001600160401b038111156102c7576102c76100f6565b6102db816102d5845461022a565b84610262565b6020601f82116001811461030d575f83156102f65750848201515b5f19600385901b1c1916600184901b1784556102a6565b5f84815260208120601f198516915b8281101561033c578785015182556020948501946001909201910161031c565b508482101561035957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161216b6103805f395f610ad1015261216b5ff3fe6080604052600436106101a3575f3560e01c8063715018a6116100e7578063a839e50111610087578063c87b56dd11610062578063c87b56dd14610460578063d92d1bd61461047f578063e985e9c5146104ad578063f2fde38b14610501575f5ffd5b8063a839e50114610412578063b88d4fde14610426578063c002d23d14610445575f5ffd5b8063902d55a5116100c2578063902d55a5146103b757806395d89b41146103cc5780639886a902146103e0578063a22cb465146103f3575f5ffd5b8063715018a61461036557806376c64c62146103795780638da5cb5b1461038d575f5ffd5b806331b3eb941161015257806355f804b31161012d57806355f804b3146102f45780636352211e146103135780636c0360eb1461033257806370a0823114610346575f5ffd5b806331b3eb94146102a357806332a93a3a146102c257806342842e0e146102d5575f5ffd5b8063081812fc11610182578063081812fc1461021f578063095ea7b31461026357806323b872dd14610284575f5ffd5b80629a9b7b146101a757806301ffc9a7146101cf57806306fdde03146101fe575b5f5ffd5b3480156101b2575f5ffd5b506101bc600a5481565b6040519081526020015b60405180910390f35b3480156101da575f5ffd5b506101ee6101e9366004611a45565b610520565b60405190151581526020016101c6565b348015610209575f5ffd5b50610212610604565b6040516101c69190611aac565b34801561022a575f5ffd5b5061023e610239366004611abe565b610693565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c6565b34801561026e575f5ffd5b5061028261027d366004611af6565b6106c7565b005b34801561028f575f5ffd5b5061028261029e366004611b20565b6106d6565b3480156102ae575f5ffd5b506102826102bd366004611b5e565b6107ca565b6101bc6102d0366004611b5e565b61086e565b3480156102e0575f5ffd5b506102826102ef366004611b20565b6108a4565b3480156102ff575f5ffd5b5061028261030e366004611c3b565b6108be565b34801561031e575f5ffd5b5061023e61032d366004611abe565b6108d2565b34801561033d575f5ffd5b506102126108dc565b348015610351575f5ffd5b506101bc610360366004611b5e565b610968565b348015610370575f5ffd5b506102826109e0565b348015610384575f5ffd5b506102826109f3565b348015610398575f5ffd5b5060065473ffffffffffffffffffffffffffffffffffffffff1661023e565b3480156103c2575f5ffd5b506101bc6109c481565b3480156103d7575f5ffd5b50610212610a0f565b6101bc6103ee366004611c80565b610a1e565b3480156103fe575f5ffd5b5061028261040d366004611d08565b610b45565b34801561041d575f5ffd5b50610282610b50565b348015610431575f5ffd5b50610282610440366004611d43565b610b6b565b348015610450575f5ffd5b506101bc67011c37937e08000081565b34801561046b575f5ffd5b5061021261047a366004611abe565b610b83565b34801561048a575f5ffd5b506101ee610499366004611b5e565b60086020525f908152604090205460ff1681565b3480156104b8575f5ffd5b506101ee6104c7366004611dbe565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b34801561050c575f5ffd5b5061028261051b366004611b5e565b610c2c565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806105b257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806105fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60605f805461061290611dea565b80601f016020809104026020016040519081016040528092919081815260200182805461063e90611dea565b80156106895780601f1061066057610100808354040283529160200191610689565b820191905f5260205f20905b81548152906001019060200180831161066c57829003601f168201915b5050505050905090565b5f61069d82610c8f565b505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166105fe565b6106d2828233610ced565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661072a576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b5f610736838333610cfa565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107c4576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610721565b50505050565b6107d2610e71565b60405147905f9073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d805f8114610829576040519150601f19603f3d011682016040523d82523d5f602084013e61082e565b606091505b5050905080610869576040517fd23a9e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f61087882610ec4565b610880610f11565b610888610f52565b61089182610f8f565b61089b6002610fee565b6105fe8261104e565b61086983838360405180602001604052805f815250610b6b565b6108c6610e71565b60076106d28282611e7f565b5f6105fe82610c8f565b600780546108e990611dea565b80601f016020809104026020016040519081016040528092919081815260200182805461091590611dea565b80156109605780601f1061093757610100808354040283529160200191610960565b820191905f5260205f20905b81548152906001019060200180831161094357829003601f168201915b505050505081565b5f73ffffffffffffffffffffffffffffffffffffffff82166109b8576040517f89c62b640000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b6109e8610e71565b6109f15f611111565b565b6109fb610e71565b610a056001610fee565b6109f16002611187565b60606001805461061290611dea565b5f610a2885610ec4565b610a30610f11565b610a38610f52565b610a4185610f8f565b610a4a8461122a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166020820152603481018590525f90605401604051602081830303815290604052805190602001209050610afc8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506112879050565b610b32576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b3b8661104e565b9695505050505050565b6106d233838361129c565b610b58610e71565b610b615f610fee565b6109f16001611187565b610b768484846106d6565b6107c43385858585611398565b60605f610b8f836108d2565b73ffffffffffffffffffffffffffffffffffffffff1603610bdc576040517fd872946b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60078054610bea90611dea565b905011610c055760405180602001604052805f8152506105fe565b6007604051602001610c179190611f96565b60405160208183030381529060405292915050565b610c34610e71565b73ffffffffffffffffffffffffffffffffffffffff8116610c83576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b610c8c81611111565b50565b5f8181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806105fe576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610721565b610869838383600161158e565b5f8281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615610d3357610d33818486611756565b73ffffffffffffffffffffffffffffffffffffffff811615610da657610d5b5f855f5f61158e565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615610dee5773ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260409020805460010190555b5f8481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146109f1576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610721565b73ffffffffffffffffffffffffffffffffffffffff8116610c8c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67011c37937e08000034146109f1576040517f21e191e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109c4600a54106109f1576040517fd05cb60900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f9081526008602052604090205460ff1615610c8c576040517fddefae2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060028111156110005761100061204a565b60095460ff1660028111156110175761101761204a565b14610c8c576040517fa1f6623900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260086020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600a8054908190836110ac83612077565b91905055506110bb8382611806565b6040805182815242602082015273ffffffffffffffffffffffffffffffffffffffff8516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a292915050565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6009805460ff81169183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156111c8576111c861204a565b02179055508160028111156111df576111df61204a565b8160028111156111f1576111f161204a565b60405142815233907f7a5907205f46c7df4a68b33c1da8921886b57f025f0ec67a42c38d2c2013a7849060200160405180910390a45050565b5f60095460ff1660028111156112425761124261204a565b148015611250575080600114155b15610c8c576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82611293858461181f565b14949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611301576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610721565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15611587576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a029061140d9088908890879087906004016120d3565b6020604051808303815f875af1925050508015611465575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261146291810190612123565b60015b6114f2573d808015611492576040519150601f19603f3d011682016040523d82523d5f602084013e611497565b606091505b5080515f036114ea576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610721565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611585576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610721565b505b5050505050565b80806115af575073ffffffffffffffffffffffffffffffffffffffff821615155b15611702575f6115be84610c8f565b905073ffffffffffffffffffffffffffffffffffffffff83161580159061161157508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561164f575073ffffffffffffffffffffffffffffffffffffffff8082165f9081526005602090815260408083209387168352929052205460ff16155b1561169e576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610721565b811561170057838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611761838383611861565b6108695773ffffffffffffffffffffffffffffffffffffffff83166117b5576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610721565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610721565b6106d2828260405180602001604052805f815250611925565b5f81815b84518110156118595761184f828683815181106118425761184261213e565b602002602001015161193c565b9150600101611823565b509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161580159061191d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118ed575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209387168352929052205460ff165b8061191d57505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b61192f838361196b565b610869335f858585611398565b5f818310611956575f828152602084905260409020611964565b5f8381526020839052604090205b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166119ba576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b5f6119c683835f610cfa565b905073ffffffffffffffffffffffffffffffffffffffff811615610869576040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610c8c575f5ffd5b5f60208284031215611a55575f5ffd5b813561196481611a18565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6119646020830184611a60565b5f60208284031215611ace575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8c575f5ffd5b5f5f60408385031215611b07575f5ffd5b8235611b1281611ad5565b946020939093013593505050565b5f5f5f60608486031215611b32575f5ffd5b8335611b3d81611ad5565b92506020840135611b4d81611ad5565b929592945050506040919091013590565b5f60208284031215611b6e575f5ffd5b813561196481611ad5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f67ffffffffffffffff841115611bc057611bc0611b79565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715611c0d57611c0d611b79565b604052838152905080828401851015611c24575f5ffd5b838360208301375f60208583010152509392505050565b5f60208284031215611c4b575f5ffd5b813567ffffffffffffffff811115611c61575f5ffd5b8201601f81018413611c71575f5ffd5b61191d84823560208401611ba6565b5f5f5f5f60608587031215611c93575f5ffd5b8435611c9e81611ad5565b935060208501359250604085013567ffffffffffffffff811115611cc0575f5ffd5b8501601f81018713611cd0575f5ffd5b803567ffffffffffffffff811115611ce6575f5ffd5b8760208260051b8401011115611cfa575f5ffd5b949793965060200194505050565b5f5f60408385031215611d19575f5ffd5b8235611d2481611ad5565b915060208301358015158114611d38575f5ffd5b809150509250929050565b5f5f5f5f60808587031215611d56575f5ffd5b8435611d6181611ad5565b93506020850135611d7181611ad5565b925060408501359150606085013567ffffffffffffffff811115611d93575f5ffd5b8501601f81018713611da3575f5ffd5b611db287823560208401611ba6565b91505092959194509250565b5f5f60408385031215611dcf575f5ffd5b8235611dda81611ad5565b91506020830135611d3881611ad5565b600181811c90821680611dfe57607f821691505b602082108103611e35577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561086957805f5260205f20601f840160051c81016020851015611e605750805b601f840160051c820191505b81811015611587575f8155600101611e6c565b815167ffffffffffffffff811115611e9957611e99611b79565b611ead81611ea78454611dea565b84611e3b565b6020601f821160018114611efe575f8315611ec85750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611587565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611f4b5787850151825560209485019460019092019101611f2b565b5084821015611f8757868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8354611fa381611dea565b600182168015611fba5760018114611fed5761201a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061201a565b865f5260205f205f5b8381101561201257815488820152600190910190602001611ff6565b505081860193505b50507f636f756e63696c6d657461646174610000000000000000000000000000000000825250600f019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120cc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f610b3b6080830184611a60565b5f60208284031215612133575f5ffd5b815161196481611a18565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd";
813
+ "0x60a060405234801561000f575f5ffd5b506040516124eb3803806124eb83398101604081905261002e91610193565b3384845f61003c83826102ae565b50600161004982826102ae565b5050506001600160a01b03811661007957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610082816100a5565b50600761008f83826102ae565b5060805250506009805460ff1916905550610368565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610119575f5ffd5b81516001600160401b03811115610132576101326100f6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610160576101606100f6565b604052818152838201602001851015610177575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101a6575f5ffd5b84516001600160401b038111156101bb575f5ffd5b6101c78782880161010a565b602087015190955090506001600160401b038111156101e4575f5ffd5b6101f08782880161010a565b604087015190945090506001600160401b0381111561020d575f5ffd5b6102198782880161010a565b606096909601519497939650505050565b600181811c9082168061023e57607f821691505b60208210810361025c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102a957805f5260205f20601f840160051c810160208510156102875750805b601f840160051c820191505b818110156102a6575f8155600101610293565b50505b505050565b81516001600160401b038111156102c7576102c76100f6565b6102db816102d5845461022a565b84610262565b6020601f82116001811461030d575f83156102f65750848201515b5f19600385901b1c1916600184901b1784556102a6565b5f84815260208120601f198516915b8281101561033c578785015182556020948501946001909201910161031c565b508482101561035957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161216b6103805f395f610ad1015261216b5ff3fe6080604052600436106101a3575f3560e01c8063715018a6116100e7578063a839e50111610087578063c87b56dd11610062578063c87b56dd14610460578063d92d1bd61461047f578063e985e9c5146104ad578063f2fde38b14610501575f5ffd5b8063a839e50114610412578063b88d4fde14610426578063c002d23d14610445575f5ffd5b8063902d55a5116100c2578063902d55a5146103b757806395d89b41146103cc5780639886a902146103e0578063a22cb465146103f3575f5ffd5b8063715018a61461036557806376c64c62146103795780638da5cb5b1461038d575f5ffd5b806331b3eb941161015257806355f804b31161012d57806355f804b3146102f45780636352211e146103135780636c0360eb1461033257806370a0823114610346575f5ffd5b806331b3eb94146102a357806332a93a3a146102c257806342842e0e146102d5575f5ffd5b8063081812fc11610182578063081812fc1461021f578063095ea7b31461026357806323b872dd14610284575f5ffd5b80629a9b7b146101a757806301ffc9a7146101cf57806306fdde03146101fe575b5f5ffd5b3480156101b2575f5ffd5b506101bc600a5481565b6040519081526020015b60405180910390f35b3480156101da575f5ffd5b506101ee6101e9366004611a45565b610520565b60405190151581526020016101c6565b348015610209575f5ffd5b50610212610604565b6040516101c69190611aac565b34801561022a575f5ffd5b5061023e610239366004611abe565b610693565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c6565b34801561026e575f5ffd5b5061028261027d366004611af6565b6106c7565b005b34801561028f575f5ffd5b5061028261029e366004611b20565b6106d6565b3480156102ae575f5ffd5b506102826102bd366004611b5e565b6107ca565b6101bc6102d0366004611b5e565b61086e565b3480156102e0575f5ffd5b506102826102ef366004611b20565b6108a4565b3480156102ff575f5ffd5b5061028261030e366004611c3b565b6108be565b34801561031e575f5ffd5b5061023e61032d366004611abe565b6108d2565b34801561033d575f5ffd5b506102126108dc565b348015610351575f5ffd5b506101bc610360366004611b5e565b610968565b348015610370575f5ffd5b506102826109e0565b348015610384575f5ffd5b506102826109f3565b348015610398575f5ffd5b5060065473ffffffffffffffffffffffffffffffffffffffff1661023e565b3480156103c2575f5ffd5b506101bc6109c481565b3480156103d7575f5ffd5b50610212610a0f565b6101bc6103ee366004611c80565b610a1e565b3480156103fe575f5ffd5b5061028261040d366004611d08565b610b45565b34801561041d575f5ffd5b50610282610b50565b348015610431575f5ffd5b50610282610440366004611d43565b610b6b565b348015610450575f5ffd5b506101bc67011c37937e08000081565b34801561046b575f5ffd5b5061021261047a366004611abe565b610b83565b34801561048a575f5ffd5b506101ee610499366004611b5e565b60086020525f908152604090205460ff1681565b3480156104b8575f5ffd5b506101ee6104c7366004611dbe565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b34801561050c575f5ffd5b5061028261051b366004611b5e565b610c2c565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806105b257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806105fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60605f805461061290611dea565b80601f016020809104026020016040519081016040528092919081815260200182805461063e90611dea565b80156106895780601f1061066057610100808354040283529160200191610689565b820191905f5260205f20905b81548152906001019060200180831161066c57829003601f168201915b5050505050905090565b5f61069d82610c8f565b505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166105fe565b6106d2828233610ced565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661072a576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b5f610736838333610cfa565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107c4576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610721565b50505050565b6107d2610e71565b60405147905f9073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d805f8114610829576040519150601f19603f3d011682016040523d82523d5f602084013e61082e565b606091505b5050905080610869576040517fd23a9e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f61087882610ec4565b610880610f11565b610888610f52565b61089182610f8f565b61089b6002610fee565b6105fe8261104e565b61086983838360405180602001604052805f815250610b6b565b6108c6610e71565b60076106d28282611e7f565b5f6105fe82610c8f565b600780546108e990611dea565b80601f016020809104026020016040519081016040528092919081815260200182805461091590611dea565b80156109605780601f1061093757610100808354040283529160200191610960565b820191905f5260205f20905b81548152906001019060200180831161094357829003601f168201915b505050505081565b5f73ffffffffffffffffffffffffffffffffffffffff82166109b8576040517f89c62b640000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b6109e8610e71565b6109f15f611111565b565b6109fb610e71565b610a056001610fee565b6109f16002611187565b60606001805461061290611dea565b5f610a2885610ec4565b610a30610f11565b610a38610f52565b610a4185610f8f565b610a4a8461122a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166020820152603481018590525f90605401604051602081830303815290604052805190602001209050610afc8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506112879050565b610b32576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b3b8661104e565b9695505050505050565b6106d233838361129c565b610b58610e71565b610b615f610fee565b6109f16001611187565b610b768484846106d6565b6107c43385858585611398565b60605f610b8f836108d2565b73ffffffffffffffffffffffffffffffffffffffff1603610bdc576040517fd872946b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60078054610bea90611dea565b905011610c055760405180602001604052805f8152506105fe565b6007604051602001610c179190611f96565b60405160208183030381529060405292915050565b610c34610e71565b73ffffffffffffffffffffffffffffffffffffffff8116610c83576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b610c8c81611111565b50565b5f8181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806105fe576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610721565b610869838383600161158e565b5f8281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615610d3357610d33818486611756565b73ffffffffffffffffffffffffffffffffffffffff811615610da657610d5b5f855f5f61158e565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615610dee5773ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260409020805460010190555b5f8481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146109f1576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610721565b73ffffffffffffffffffffffffffffffffffffffff8116610c8c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67011c37937e08000034146109f1576040517f21e191e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109c4600a54106109f1576040517fd05cb60900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f9081526008602052604090205460ff1615610c8c576040517fddefae2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060028111156110005761100061204a565b60095460ff1660028111156110175761101761204a565b14610c8c576040517fa1f6623900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260086020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600a8054908190836110ac83612077565b91905055506110bb8382611806565b6040805182815242602082015273ffffffffffffffffffffffffffffffffffffffff8516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a292915050565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6009805460ff81169183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156111c8576111c861204a565b02179055508160028111156111df576111df61204a565b8160028111156111f1576111f161204a565b60405142815233907f7a5907205f46c7df4a68b33c1da8921886b57f025f0ec67a42c38d2c2013a7849060200160405180910390a45050565b5f60095460ff1660028111156112425761124261204a565b148015611250575080600114155b15610c8c576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82611293858461181f565b14949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611301576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610721565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15611587576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a029061140d9088908890879087906004016120d3565b6020604051808303815f875af1925050508015611465575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261146291810190612123565b60015b6114f2573d808015611492576040519150601f19603f3d011682016040523d82523d5f602084013e611497565b606091505b5080515f036114ea576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610721565b805160208201fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611585576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610721565b505b5050505050565b80806115af575073ffffffffffffffffffffffffffffffffffffffff821615155b15611702575f6115be84610c8f565b905073ffffffffffffffffffffffffffffffffffffffff83161580159061161157508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561164f575073ffffffffffffffffffffffffffffffffffffffff8082165f9081526005602090815260408083209387168352929052205460ff16155b1561169e576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610721565b811561170057838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611761838383611861565b6108695773ffffffffffffffffffffffffffffffffffffffff83166117b5576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610721565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610721565b6106d2828260405180602001604052805f815250611925565b5f81815b84518110156118595761184f828683815181106118425761184261213e565b602002602001015161193c565b9150600101611823565b509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161580159061191d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118ed575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209387168352929052205460ff165b8061191d57505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b61192f838361196b565b610869335f858585611398565b5f818310611956575f828152602084905260409020611964565b5f8381526020839052604090205b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166119ba576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b5f6119c683835f610cfa565b905073ffffffffffffffffffffffffffffffffffffffff811615610869576040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610721565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610c8c575f5ffd5b5f60208284031215611a55575f5ffd5b813561196481611a18565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6119646020830184611a60565b5f60208284031215611ace575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8c575f5ffd5b5f5f60408385031215611b07575f5ffd5b8235611b1281611ad5565b946020939093013593505050565b5f5f5f60608486031215611b32575f5ffd5b8335611b3d81611ad5565b92506020840135611b4d81611ad5565b929592945050506040919091013590565b5f60208284031215611b6e575f5ffd5b813561196481611ad5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f67ffffffffffffffff841115611bc057611bc0611b79565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715611c0d57611c0d611b79565b604052838152905080828401851015611c24575f5ffd5b838360208301375f60208583010152509392505050565b5f60208284031215611c4b575f5ffd5b813567ffffffffffffffff811115611c61575f5ffd5b8201601f81018413611c71575f5ffd5b61191d84823560208401611ba6565b5f5f5f5f60608587031215611c93575f5ffd5b8435611c9e81611ad5565b935060208501359250604085013567ffffffffffffffff811115611cc0575f5ffd5b8501601f81018713611cd0575f5ffd5b803567ffffffffffffffff811115611ce6575f5ffd5b8760208260051b8401011115611cfa575f5ffd5b949793965060200194505050565b5f5f60408385031215611d19575f5ffd5b8235611d2481611ad5565b915060208301358015158114611d38575f5ffd5b809150509250929050565b5f5f5f5f60808587031215611d56575f5ffd5b8435611d6181611ad5565b93506020850135611d7181611ad5565b925060408501359150606085013567ffffffffffffffff811115611d93575f5ffd5b8501601f81018713611da3575f5ffd5b611db287823560208401611ba6565b91505092959194509250565b5f5f60408385031215611dcf575f5ffd5b8235611dda81611ad5565b91506020830135611d3881611ad5565b600181811c90821680611dfe57607f821691505b602082108103611e35577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561086957805f5260205f20601f840160051c81016020851015611e605750805b601f840160051c820191505b81811015611587575f8155600101611e6c565b815167ffffffffffffffff811115611e9957611e99611b79565b611ead81611ea78454611dea565b84611e3b565b6020601f821160018114611efe575f8315611ec85750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611587565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611f4b5787850151825560209485019460019092019101611f2b565b5084821015611f8757868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8354611fa381611dea565b600182168015611fba5760018114611fed5761201a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061201a565b865f5260205f205f5b8381101561201257815488820152600190910190602001611ff6565b505081860193505b50507f636f756e63696c6d657461646174610000000000000000000000000000000000825250600f019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120cc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f610b3b6080830184611a60565b5f60208284031215612133575f5ffd5b815161196481611a18565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd";
814
814
 
815
815
  type MemberConstructorParams =
816
816
  | [signer?: Signer]
@@ -165,6 +165,24 @@ const _abi = [
165
165
  ],
166
166
  stateMutability: "view",
167
167
  },
168
+ {
169
+ type: "function",
170
+ name: "joinSpace",
171
+ inputs: [
172
+ {
173
+ name: "action",
174
+ type: "uint8",
175
+ internalType: "enum IMembershipBase.JoinType",
176
+ },
177
+ {
178
+ name: "data",
179
+ type: "bytes",
180
+ internalType: "bytes",
181
+ },
182
+ ],
183
+ outputs: [],
184
+ stateMutability: "payable",
185
+ },
168
186
  {
169
187
  type: "function",
170
188
  name: "joinSpace",
@@ -1091,6 +1109,11 @@ const _abi = [
1091
1109
  name: "Membership__InsufficientPayment",
1092
1110
  inputs: [],
1093
1111
  },
1112
+ {
1113
+ type: "error",
1114
+ name: "Membership__InvalidAction",
1115
+ inputs: [],
1116
+ },
1094
1117
  {
1095
1118
  type: "error",
1096
1119
  name: "Membership__InvalidAddress",
@@ -1396,7 +1419,7 @@ const _abi = [
1396
1419
  ] as const;
1397
1420
 
1398
1421
  const _bytecode =
1399
- "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b61529b806100ca5f395ff3fe608060405260043610610162575f3560e01c806379dda585116100c657806393b13cb71161007c578063a5a4103111610057578063a5a41031146103ab578063df9a9fe6146103bf578063e847abdd146103de575f5ffd5b806393b13cb71461035757806395d600c81461037857806397fb7c1e1461038c575f5ffd5b80638120f0ba116100ac5780638120f0ba146102f857806383f3f0dc146103255780638c625b0614610344575f5ffd5b806379dda585146102d15780637c9669ac146102e5575f5ffd5b80635becd24a1161011b578063686f768411610101578063686f76841461028b57806369d5f38a1461029e578063706b8e09146102bd575f5ffd5b80635becd24a14610233578063657e45e814610252575f5ffd5b806317c957091161014b57806317c95709146101ae5780633e9491a2146102025780635803909f14610214575f5ffd5b80630ef1be5f146101665780631278076a14610187575b5f5ffd5b348015610171575f5ffd5b506101856101803660046146cd565b6103f2565b005b348015610192575f5ffd5b5061019b6104a7565b6040519081526020015b60405180910390f35b3480156101b9575f5ffd5b5061019b6101c836600461473b565b5f9081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602052604090205467ffffffffffffffff1690565b34801561020d575f5ffd5b504761019b565b34801561021f575f5ffd5b5061019b61022e36600461473b565b610500565b34801561023e575f5ffd5b5061018561024d36600461473b565b61055b565b34801561025d575f5ffd5b50610266610642565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a5565b61018561029936600461485d565b610681565b3480156102a9575f5ffd5b506101856102b836600461473b565b6106c5565b3480156102c8575f5ffd5b5061019b6107dd565b3480156102dc575f5ffd5b506102666107e6565b6101856102f336600461473b565b610825565b348015610303575f5ffd5b5061030c610868565b60405167ffffffffffffffff90911681526020016101a5565b348015610330575f5ffd5b5061018561033f36600461495c565b610871565b610185610352366004614977565b6108eb565b348015610362575f5ffd5b5061036b61091e565b6040516101a591906149de565b348015610383575f5ffd5b5061019b610928565b348015610397575f5ffd5b506101856103a636600461473b565b610951565b3480156103b6575f5ffd5b5061019b610a3b565b3480156103ca575f5ffd5b506101856103d9366004614977565b610a92565b3480156103e9575f5ffd5b50610266610b6b565b6103fa610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610465576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6104a382828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c6a92505050565b5050565b5f6104fb6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610c95565b905090565b5f610555826105507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610f0c565b92915050565b610563610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b5f6105f27fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b9050801580159061060257508082115b15610630576106307fc3983b9100000000000000000000000000000000000000000000000000000000610ff5565b61063982610ffd565b6104a3826110a1565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd21268540361069f5763ab143c065f526004601cfd5b3068929eee149b4bd21268556106b5828261115f565b3868929eee149b4bd21268555050565b6106cd610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610733576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b61073c81611263565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546040517f91b7f5ed0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906391b7f5ed906024015f604051808303815f87803b1580156107c4575f5ffd5b505af11580156107d6573d5f5f3e3d5ffd5b5050505050565b5f6104fb61130b565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd2126854036108435763ab143c065f526004601cfd5b3068929eee149b4bd212685561085933826113d6565b3868929eee149b4bd212685550565b5f6104fb611564565b610879610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108df576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b6108e881611627565b50565b3068929eee149b4bd2126854036109095763ab143c065f526004601cfd5b3068929eee149b4bd2126855610859816116a2565b60606104fb61174b565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b610959610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b610a1381610a0e7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b6117fd565b6108e8817fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60355565b5f6104fb610a8d6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b61182e565b610a9a610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b610b09816119a1565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610c40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6491906149f0565b91505090565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c6104a38282614aa0565b5f5f610c9f61130b565b90505f610ce07fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b90505f610ceb6107e6565b905073ffffffffffffffffffffffffffffffffffffffff8216610d7e578073ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d759190614bb7565b95945050505050565b6040517f5cf4ee91000000000000000000000000000000000000000000000000000000008152600481018490526024810186905273ffffffffffffffffffffffffffffffffffffffff831690635cf4ee9190604401602060405180830381865afa158015610dee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e129190614bb7565b93505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e829190614bb7565b905080851015610f03578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef99190614bb7565b9695505050505050565b50505050919050565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60081610f376107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa79190614bb7565b5f8781526009850160205260409020549091508015610fd457818110828218028118945050505050610555565b5f610fde87610c95565b905082811083821802811898975050505050505050565b805f5260045ffd5b6110056107e6565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110719190614bb7565b8111156108e8576108e87fc3983b9100000000000000000000000000000000000000000000000000000000610ff5565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6078190557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009082907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f905f90a25050565b61116882611ada565b5f611171611bd0565b90505f811561118557611182611c69565b90505b61118f8484611cfb565b5f836040516020016111a19190614bce565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507f686f7684000000000000000000000000000000000000000000000000000000005f6112088761120384338388611da0565b611dd2565b90505f5f61121889338589611f0d565b915091508061125857811561124e5786156112365761123683611f88565b611240838a612101565b6112498961218c565b611258565b611258838a61227b565b505050505050505050565b5f61126c6107e6565b73ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d89190614bb7565b9050808210156104a3576104a37f3447ac8e00000000000000000000000000000000000000000000000000000000610ff5565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d545f907fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009060ff16156113625760070154919050565b61136a6107e6565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c649190614bb7565b5f6113e0826122e1565b905073ffffffffffffffffffffffffffffffffffffffff8116611426576114267f5fbd571700000000000000000000000000000000000000000000000000000000610ff5565b5f61142f611564565b67ffffffffffffffff1690505f61148b846105507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b9050348111156114be576114be7f34a7a93d00000000000000000000000000000000000000000000000000000000610ff5565b6114c883826122ec565b5f6114d38683612349565b90505f6114e08284614c55565b905080156114f4576114f28782612411565b505b5f6114ff8434614c55565b90508015611550576115506115487fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308a84612587565b61155a87866125d9565b5050505050505050565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065474010000000000000000000000000000000000000000900467ffffffffffffffff165f819003611624576115b86107e6565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611600573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fb9190614c68565b90565b61163081612707565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6116ab81611ada565b5f6116b4611bd0565b90505f81156116c8576116c5611c69565b90505b5f638c625b0660e01b90505f6116f28561120384338960405180602001604052805f815250611da0565b90505f5f61170287338588611f0d565b915091508061174257811561173857851561172057611720836127fd565b61172a8388612101565b6117338761218c565b611742565b611742838861227b565b50505050505050565b60607fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600c01805461177c90614a0b565b80601f01602080910402602001604051908101604052809291908181526020018280546117a890614a0b565b80156117f35780601f106117ca576101008083540402835291602001916117f3565b820191905f5260205f20905b8154815290600101906020018083116117d657829003601f168201915b5050505050905090565b808210156104a3576104a37fccc9aa2e00000000000000000000000000000000000000000000000000000000610ff5565b5f5f6118386107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611884573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a89190614bb7565b905080841015611927578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191f9190614bb7565b949350505050565b61191f848373ffffffffffffffffffffffffffffffffffffffff16639f6542aa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119989190614c83565b61ffff1661291b565b73ffffffffffffffffffffffffffffffffffffffff81166119e5576119e57f0e88bf4b00000000000000000000000000000000000000000000000000000000610ff5565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff166040517f8df80bd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529190911690638df80bd690602401602060405180830381865afa158015611a89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aad9190614cb8565b6108e8576108e87f0e88bf4b00000000000000000000000000000000000000000000000000000000610ff5565b73ffffffffffffffffffffffffffffffffffffffff8116611b1e57611b1e7f5fbd571700000000000000000000000000000000000000000000000000000000610ff5565b5f611b477fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b90508015801590611ba2575080611b9f7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b10155b156104a3576104a37f7efcdb4900000000000000000000000000000000000000000000000000000000610ff5565b5f5f611c1d7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611c2861130b565b90505f611c3361296e565b905082821115611c46575f935050505090565b8015611c5f57611c566001612997565b5f935050505090565b6001935050505090565b5f5f611cb96104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b9050611cc4816129d4565b915081341015611cf757611cf77fb1296a8a00000000000000000000000000000000000000000000000000000000610ff5565b5090565b602081015173ffffffffffffffffffffffffffffffffffffffff16156104a3578173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff161480611d725750602081015173ffffffffffffffffffffffffffffffffffffffff1633145b156104a3576104a37f5fbd571700000000000000000000000000000000000000000000000000000000610ff5565b606084848484604051602001611db99493929190614cd1565b6040516020818303038152906040529050949350505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201524360348201525f908190605401604051602081830303815290604052805190602001209050611eb181611e858387611e3886612a04565b6040805160208082019590955273ffffffffffffffffffffffffffffffffffffffff9390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b91505f611ebd83612a4a565b511115611eed57611eed7ff82e65c300000000000000000000000000000000000000000000000000000000610ff5565b611ef78284612b2a565b3415611f0657611f0682612b82565b5092915050565b5f5f5f611f4e6040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250612be0565b9050611f5a8188612d78565b15611f6c5760015f9250925050611f7f565b611f798188888888612f93565b92509250505b94509492505050565b5f611fd76104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611fe3826129d4565b90505f5f5f5f611ff287612a4a565b8060200190518101906120059190614da8565b929650909450925090507fffffffff0000000000000000000000000000000000000000000000000000000084167f686f76840000000000000000000000000000000000000000000000000000000014612081576120817fda6153bd00000000000000000000000000000000000000000000000000000000610ff5565b5f818060200190518101906120969190614e2c565b90505f5f6120a4868a612349565b90505f6120b587855f01518c613120565b90505f6120cc88866020015187604001518e61328d565b905080826120da858d614c55565b6120e49190614c55565b6120ee9190614c55565b93505050506112588986868a858d61340f565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e01602052604090205480156121875761213e8382613455565b61218761217f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308484612587565b505050565b5f6121956134bd565b9050612219816121e96104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b5f9182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b6122248260016134e4565b61223581612230611564565b6125d9565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b576905f90a35050565b6122938260405180602001604052805f815250612b2a565b61229d8282612101565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f905f90a25050565b5f61055581836134fd565b5f6122f5613508565b90505f612324825f8560405160200161231091815260200190565b6040516020818303038152906040526135db565b905061233182858361364c565b6123438261233d610baa565b8361364c565b50505050565b5f6123538261182e565b90506105556123967fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b8461239f6107e6565b73ffffffffffffffffffffffffffffffffffffffff16634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240b91906149f0565b84612587565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600816124727fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b90507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8216016124d4578382600a015f8282546124c49190614ed4565b9091555084935061055592505050565b5f6124f573ffffffffffffffffffffffffffffffffffffffff8316306136cb565b905061250382873088612587565b5f61252473ffffffffffffffffffffffffffffffffffffffff8416306136cb565b90505f6125318383614c55565b9050868114612563576125637fb1296a8a00000000000000000000000000000000000000000000000000000000610ff5565b8085600a015f8282546125769190614ed4565b909155509098975050505050505050565b80156123435773ffffffffffffffffffffffffffffffffffffffff841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146125cf576125ca848484846136fe565b612343565b6123438282613792565b5f8281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602081905260409091205467ffffffffffffffff16801580159061261f57505f5b15612659576040517ff7d2131a0000000000000000000000000000000000000000000000000000000081526004810185905260240161045c565b5f428267ffffffffffffffff16111561267d576126768483614ee7565b905061268a565b6126878442614ee7565b90505b5f858152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b5f6127106107e6565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612758573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061277c9190614c68565b67ffffffffffffffff1690508167ffffffffffffffff165f036127c2576127c27f82323d2e00000000000000000000000000000000000000000000000000000000610ff5565b808267ffffffffffffffff1611156104a3576104a37f82323d2e00000000000000000000000000000000000000000000000000000000610ff5565b5f61284c6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f612858826129d4565b90505f5f5f61286686612a4a565b8060200190518101906128799190614da8565b50919450925090507fffffffff0000000000000000000000000000000000000000000000000000000083167f8c625b0600000000000000000000000000000000000000000000000000000000146128f3576128f37fda6153bd00000000000000000000000000000000000000000000000000000000610ff5565b5f6128fe8387612349565b90505f61290b8287614c55565b905061155a88858589858c61340f565b5f612710821115612950576129507f197f196200000000000000000000000000000000000000000000000000000000836137b2565b61271061295d8385614f07565b6129679190614f1e565b9392505050565b5f7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c005b54919050565b7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c008054829082905f906129cb908490614c55565b90915550505050565b5f5f6129de61296e565b905080156129ee57505f92915050565b825f036129fd57505f92915050565b5090919050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0060208190526040822080549083612a3f83614f56565b909155509392505050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e026020526040902080546060917f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0091612aa690614a0b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ad290614a0b565b8015612b1d5780601f10612af457610100808354040283529160200191612b1d565b820191905f5260205f20905b815481529060010190602001808311612b0057829003601f168201915b5050505050915050919050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00906123438382614aa0565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00923492916129cb908490614ed4565b60605f612beb6137be565b80519091505f8167ffffffffffffffff811115612c0a57612c0a614773565b604051908082528060200260200182016040528015612c6d57816020015b612c5a6040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081612c285790505b50855160208701209091505f90815b84811015612d6c575f5f5f5f612caa8a8681518110612c9d57612c9d614f8d565b60200260200101516137e9565b93509350935093505f5b8251811015612d5c5786838281518110612cd057612cd0614f8d565b60200260200101518051906020012003612d54576040518060a001604052808c8881518110612d0157612d01614f8d565b60200260200101518152602001868152602001851515815260200184815260200183815250898981518110612d3857612d38614f8d565b602002602001018190525087612d4d90614f56565b9750612d5c565b600101612cb4565b5050505050806001019050612c7c565b50508152949350505050565b5f5f612d83836138d5565b90505f5b8451811015612f8957848181518110612da257612da2614f8d565b602002602001015160400151612f81575f5b858281518110612dc657612dc6614f8d565b60200260200101516080015151811015612f7f575f868381518110612ded57612ded614f8d565b6020026020010151608001518281518110612e0a57612e0a614f8d565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e819190614cb8565b158015612f6457508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5335f5f1b866040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250604051602001612eef9190614fba565b604051602081830303815290604052612f0790614fd0565b6040518463ffffffff1660e01b8152600401612f2593929190615012565b602060405180830381865afa158015612f40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f649190614cb8565b15612f76576001945050505050610555565b50600101612db4565b505b600101612d87565b505f949350505050565b5f8080805b885181101561311157888181518110612fb357612fb3614f8d565b602002602001015160400151613109575f5b898281518110612fd757612fd7614f8d565b60200260200101516080015151811015613107575f8a8381518110612ffe57612ffe614f8d565b602002602001015160800151828151811061301b5761301b614f8d565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561306e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130929190614cb8565b156130fe57836130cf576130c68a8a8a848f88815181106130b5576130b5614f8d565b60200260200101515f01518c613c19565b600193506130f9565b6130f98a8a8a848f88815181106130e8576130e8614f8d565b60200260200101515f01515f613c19565b600194505b50600101612fc5565b505b600101612f98565b505f9250509550959350505050565b5f73ffffffffffffffffffffffffffffffffffffffff831661314357505f612967565b5f6131827fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cb4f54800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529190911690635cb4f54890602401608060405180830381865afa1580156131ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613212919061507d565b905080604001515f03613228575f915050612967565b61323683826040015161291b565b91506132856132797fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b86836020015185612587565b509392505050565b5f82515f1461333d575f6132a084613d09565b604081015190915073ffffffffffffffffffffffffffffffffffffffff1615806132cc57506020810151155b156132da575f91505061191f565b6132e883826020015161291b565b915061333761332b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b87836040015185612587565b5061191f565b73ffffffffffffffffffffffffffffffffffffffff84161561191f578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361339357505f61191f565b6133c4826133bf7faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b61291b565b905061191f6134077fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b868684612587565b81156134215761341f8583612411565b505b61342b8684613455565b6134438660405180602001604052805f815250612b2a565b61344d84826122ec565b505050505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00928492916134b3908490614c55565b9091555050505050565b5f7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00612991565b6104a3828260405180602001604052805f815250613db1565b5f6129678383613e79565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f44ab66800000000000000000000000000000000000000000000000000000000081527f526976657241697264726f700000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906344ab668090602401602060405180830381865afa1580156135b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fb91906149f0565b6040517fdc69fdde0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063dc69fdde9061363190869086906004016150f7565b602060405180830381865afa1580156118fb573d5f5f3e3d5ffd5b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528416906340c10f19906044015f604051808303815f87803b1580156136b9575f5ffd5b505af1158015611742573d5f5f3e3d5ffd5b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603156123435773ffffffffffffffffffffffffffffffffffffffff83163014613771576125ca73ffffffffffffffffffffffffffffffffffffffff8516848484613fb4565b61234373ffffffffffffffffffffffffffffffffffffffff85168383614016565b6104a373ffffffffffffffffffffffffffffffffffffffff831682614069565b815f528060045260245ffd5b60606104fb7f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01614082565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604081208054606092918391829190819061382b90614a0b565b80601f016020809104026020016040519081016040528092919081815260200182805461385790614a0b565b80156138a25780601f10613879576101008083540402835291602001916138a2565b820191905f5260205f20905b81548152906001019060200180831161388557829003601f168201915b5050505060018301549196505060ff1693506138c06002820161408e565b92506138cb81614165565b9150509193509193565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa15801561396c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526139b19190810190615144565b905080515f03613b22576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa158015613a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a4c91906149f0565b905073ffffffffffffffffffffffffffffffffffffffff811615613b20576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa158015613ad8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613b1d9190810190615144565b91505b505b80515f613b30826001614ed4565b67ffffffffffffffff811115613b4857613b48614773565b604051908082528060200260200182016040528015613b71578160200160208202803683370190505b5090505f5b82811015613bd757838181518110613b9057613b90614f8d565b6020026020010151828281518110613baa57613baa614f8d565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613b76565b5085818381518110613beb57613beb614f8d565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015295945050505050565b613c24868483614174565b5f7f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e005f8681526001828101602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117815560030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716179055905080546040805173ffffffffffffffffffffffffffffffffffffffff89811660208301526117429316918a918991889188910160405160208183030381529060405261422d565b613d416040518060600160405280606081526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5080516020808301919091205f9081527faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008028252604090819020815160608101835293845280549284019290925260019091015473ffffffffffffffffffffffffffffffffffffffff169082015290565b613dbb838361434d565b73ffffffffffffffffffffffffffffffffffffffff83163b15612187577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548281035b613e105f868380600101945086614502565b613e46576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613dfe57817f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0054146107d6575f5ffd5b5f818311613f8257505f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c010000000000000000000000000000000000000000000000000000000083169003613f8057815f03613f7a5780548310613f39576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f81815260048401602052604090205490929091508115613f3a575b50610555565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661400857803d873b15171061400857637939f4245f526004601cfd5b505f60605260405250505050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661405f57803d853b15171061405f576390b8ec185f526004601cfd5b505f603452505050565b5f385f3884865af16104a35763b12d13eb5f526004601cfd5b60605f61296783614674565b6060815f01805480602002602001604051908101604052809291908181526020015f905b8282101561415a578382905f5260205f200180546140cf90614a0b565b80601f01602080910402602001604051908101604052809291908181526020018280546140fb90614a0b565b80156141465780601f1061411d57610100808354040283529160200191614146565b820191905f5260205f20905b81548152906001019060200180831161412957829003601f168201915b5050505050815260200190600101906140b2565b505050509050919050565b60605f61296783600401614082565b348111156141a5576141a57ff4e95a4100000000000000000000000000000000000000000000000000000000610ff5565b73ffffffffffffffffffffffffffffffffffffffff83166141e9576141e97f99ef038800000000000000000000000000000000000000000000000000000000610ff5565b73ffffffffffffffffffffffffffffffffffffffff8216612187576121877f4bb7c20500000000000000000000000000000000000000000000000000000000610ff5565b81156142c0576040517f21be050a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906321be050a90849061428d9089908990899088906004016151f8565b5f604051808303818588803b1580156142a4575f5ffd5b505af11580156142b6573d5f5f3e3d5ffd5b505050505061344d565b6040517f21be050a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906321be050a906143189088908890889087906004016151f8565b5f604051808303815f87803b15801561432f575f5ffd5b505af1158015614341573d5f5f3e3d5ffd5b50505050505050505050565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f8290036143a9576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146144a05780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa460010161446a565b50815f036144da576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550505050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061455c903390899088908890600401615232565b6020604051808303815f875af19250505080156145b4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526145b191810190615282565b60015b614629573d8080156145e1576040519150601f19603f3d011682016040523d82523d5f602084013e6145e6565b606091505b5080515f03614621576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061191f565b6060815f018054806020026020016040519081016040528092919081815260200182805480156146c157602002820191905f5260205f20905b8154815260200190600101908083116146ad575b50505050509050919050565b5f5f602083850312156146de575f5ffd5b823567ffffffffffffffff8111156146f4575f5ffd5b8301601f81018513614704575f5ffd5b803567ffffffffffffffff81111561471a575f5ffd5b85602082840101111561472b575f5ffd5b6020919091019590945092505050565b5f6020828403121561474b575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146108e8575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156147c3576147c3614773565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561481057614810614773565b604052919050565b5f67ffffffffffffffff82111561483157614831614773565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f5f6040838503121561486e575f5ffd5b823561487981614752565b9150602083013567ffffffffffffffff811115614894575f5ffd5b8301606081860312156148a5575f5ffd5b6148ad6147a0565b81356148b881614752565b815260208201356148c881614752565b6020820152604082013567ffffffffffffffff8111156148e6575f5ffd5b80830192505085601f8301126148fa575f5ffd5b813561490d61490882614818565b6147c9565b818152876020838601011115614921575f5ffd5b816020850160208301375f60208383010152806040840152505080925050509250929050565b67ffffffffffffffff811681146108e8575f5ffd5b5f6020828403121561496c575f5ffd5b813561296781614947565b5f60208284031215614987575f5ffd5b813561296781614752565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6129676020830184614992565b5f60208284031215614a00575f5ffd5b815161296781614752565b600181811c90821680614a1f57607f821691505b602082108103614a56577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561218757805f5260205f20601f840160051c81016020851015614a815750805b601f840160051c820191505b818110156107d6575f8155600101614a8d565b815167ffffffffffffffff811115614aba57614aba614773565b614ace81614ac88454614a0b565b84614a5c565b6020601f821160018114614b1f575f8315614ae95750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556107d6565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614b6c5787850151825560209485019460019092019101614b4c565b5084821015614ba857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215614bc7575f5ffd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160608084015261191f6080840182614992565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561055557610555614c28565b5f60208284031215614c78575f5ffd5b815161296781614947565b5f60208284031215614c93575f5ffd5b815161ffff81168114612967575f5ffd5b80518015158114614cb3575f5ffd5b919050565b5f60208284031215614cc8575f5ffd5b61296782614ca4565b7fffffffff000000000000000000000000000000000000000000000000000000008516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f610ef96080830184614992565b80517fffffffff0000000000000000000000000000000000000000000000000000000081168114614cb3575f5ffd5b5f614d7f61490884614818565b9050828152838383011115614d92575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f5f60808587031215614dbb575f5ffd5b614dc485614d43565b93506020850151614dd481614752565b6040860151909350614de581614752565b606086015190925067ffffffffffffffff811115614e01575f5ffd5b8501601f81018713614e11575f5ffd5b614e2087825160208401614d72565b91505092959194509250565b5f60208284031215614e3c575f5ffd5b815167ffffffffffffffff811115614e52575f5ffd5b820160608185031215614e63575f5ffd5b614e6b6147a0565b8151614e7681614752565b81526020820151614e8681614752565b6020820152604082015167ffffffffffffffff811115614ea4575f5ffd5b80830192505084601f830112614eb8575f5ffd5b614ec785835160208501614d72565b6040820152949350505050565b8082018082111561055557610555614c28565b67ffffffffffffffff818116838216019081111561055557610555614c28565b808202811582820484141761055557610555614c28565b5f82614f51577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f8657614f86614c28565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b80516020808301519190811015614a56577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561506957835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101615035565b505060409390930193909352509392505050565b5f608082840312801561508e575f5ffd5b506040516080810167ffffffffffffffff811182821017156150b2576150b2614773565b60405282516150c081614752565b815260208301516150d081614752565b6020820152604083810151908201526150eb60608401614ca4565b60608201529392505050565b5f6004841061512d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8382526040602083015261191f6040830184614992565b5f60208284031215615154575f5ffd5b815167ffffffffffffffff81111561516a575f5ffd5b8201601f8101841361517a575f5ffd5b805167ffffffffffffffff81111561519457615194614773565b8060051b6151a4602082016147c9565b918252602081840181019290810190878411156151bf575f5ffd5b6020850194505b838510156151ed57845192506151db83614752565b828252602094850194909101906151c6565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152826040820152608060608201525f610ef96080830184614992565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f610ef96080830184614992565b5f60208284031215615292575f5ffd5b61296782614d4356";
1422
+ "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b61553d806100ca5f395ff3fe60806040526004361061016d575f3560e01c806379dda585116100c657806393b13cb71161007c578063a5a4103111610057578063a5a41031146103c9578063df9a9fe6146103dd578063e847abdd146103fc575f5ffd5b806393b13cb71461037557806395d600c81461039657806397fb7c1e146103aa575f5ffd5b80638120f0ba116100ac5780638120f0ba1461031657806383f3f0dc146103435780638c625b0614610362575f5ffd5b806379dda585146102ef5780637c9669ac14610303575f5ffd5b80635803909f11610126578063686f768411610101578063686f7684146102a957806369d5f38a146102bc578063706b8e09146102db575f5ffd5b80635803909f146102325780635becd24a14610251578063657e45e814610270575f5ffd5b806317c957091161015657806317c95709146101b9578063280a47c71461020d5780633e9491a214610220575f5ffd5b80630ef1be5f146101715780631278076a14610192575b5f5ffd5b34801561017c575f5ffd5b5061019061018b36600461490f565b610410565b005b34801561019d575f5ffd5b506101a66104c5565b6040519081526020015b60405180910390f35b3480156101c4575f5ffd5b506101a66101d336600461494e565b5f9081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602052604090205467ffffffffffffffff1690565b61019061021b366004614965565b61051e565b34801561022b575f5ffd5b50476101a6565b34801561023d575f5ffd5b506101a661024c36600461494e565b6105f4565b34801561025c575f5ffd5b5061019061026b36600461494e565b61064f565b34801561027b575f5ffd5b50610284610736565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b0565b6101906102b7366004614b6f565b610775565b3480156102c7575f5ffd5b506101906102d636600461494e565b6107b9565b3480156102e6575f5ffd5b506101a66108d1565b3480156102fa575f5ffd5b506102846108da565b61019061031136600461494e565b610919565b348015610321575f5ffd5b5061032a61095c565b60405167ffffffffffffffff90911681526020016101b0565b34801561034e575f5ffd5b5061019061035d366004614bd1565b610965565b610190610370366004614bec565b6109df565b348015610380575f5ffd5b50610389610a12565b6040516101b09190614c53565b3480156103a1575f5ffd5b506101a6610a1c565b3480156103b5575f5ffd5b506101906103c436600461494e565b610a45565b3480156103d4575f5ffd5b506101a6610b2f565b3480156103e8575f5ffd5b506101906103f7366004614bec565b610b86565b348015610407575f5ffd5b50610284610c5f565b610418610c9e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610483576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6104c182828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5e92505050565b5050565b5f6105196105147f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610d89565b905090565b3068929eee149b4bd21268540361053c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f83600181111561055b5761055b614c65565b0361057e575f61056d82840184614bec565b905061057881611000565b506105e3565b600183600181111561059257610592614c65565b036105ba575f806105a583850185614b6f565b915091506105b382826110c2565b50506105e3565b6105e37f3be01969000000000000000000000000000000000000000000000000000000006111c1565b3868929eee149b4bd2126855505050565b5f610649826106447f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b6111c9565b92915050565b610657610c9e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bd576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161047a565b5f6106e67fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b905080158015906106f657508082115b15610724576107247fc3983b91000000000000000000000000000000000000000000000000000000006111c1565b61072d826112b2565b6104c182611356565b5f6105197fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd2126854036107935763ab143c065f526004601cfd5b3068929eee149b4bd21268556107a982826110c2565b3868929eee149b4bd21268555050565b6107c1610c9e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610827576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161047a565b61083081611414565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546040517f91b7f5ed0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906391b7f5ed906024015f604051808303815f87803b1580156108b8575f5ffd5b505af11580156108ca573d5f5f3e3d5ffd5b5050505050565b5f6105196114bc565b5f6105197fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd2126854036109375763ab143c065f526004601cfd5b3068929eee149b4bd212685561094d3382611587565b3868929eee149b4bd212685550565b5f610519611715565b61096d610c9e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161047a565b6109dc816117d8565b50565b3068929eee149b4bd2126854036109fd5763ab143c065f526004601cfd5b3068929eee149b4bd212685561094d81611000565b6060610519611853565b5f6105197fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b610a4d610c9e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161047a565b610b0781610b027f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b611905565b6109dc817fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60355565b5f610519610b816105147f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b611936565b610b8e610c9e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161047a565b610bfd81611aa9565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b5f6105197fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610d34573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d589190614c92565b91505090565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c6104c18282614d42565b5f5f610d936114bc565b90505f610dd47fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b90505f610ddf6108da565b905073ffffffffffffffffffffffffffffffffffffffff8216610e72578073ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e699190614e59565b95945050505050565b6040517f5cf4ee91000000000000000000000000000000000000000000000000000000008152600481018490526024810186905273ffffffffffffffffffffffffffffffffffffffff831690635cf4ee9190604401602060405180830381865afa158015610ee2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f069190614e59565b93505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f769190614e59565b905080851015610ff7578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fed9190614e59565b9695505050505050565b50505050919050565b61100981611be2565b5f611012611cd8565b90505f811561102657611023611d71565b90505b5f61106a846110657f8c625b06d047a4c1ca46cdab06b7e14ce79b486f06c67a1b220fa942669ca49b338860405180602001604052805f815250611e03565b611e35565b90505f5f61107a86338587611fca565b91509150806110ba5781156110b05784156110985761109883612045565b6110a283876121ea565b6110ab86612275565b6110ba565b6110ba8387612364565b505050505050565b6110cb82611be2565b5f6110d4611cd8565b90505f81156110e8576110e5611d71565b90505b6110f284846123bb565b5f836040516020016111049190614e70565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507f686f7684000000000000000000000000000000000000000000000000000000005f6111668761106584338388611e03565b90505f5f61117689338589611fca565b91509150806111b65781156111ac5786156111945761119483612460565b61119e838a6121ea565b6111a789612275565b6111b6565b6111b6838a612364565b505050505050505050565b805f5260045ffd5b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600816111f46108da565b90505f8173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611240573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112649190614e59565b5f878152600985016020526040902054909150801561129157818110828218028118945050505050610649565b5f61129b87610d89565b905082811083821802811898975050505050505050565b6112ba6108da565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611302573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113269190614e59565b8111156109dc576109dc7fc3983b91000000000000000000000000000000000000000000000000000000006111c1565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6078190557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009082907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f905f90a25050565b5f61141d6108da565b73ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611465573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114899190614e59565b9050808210156104c1576104c17f3447ac8e000000000000000000000000000000000000000000000000000000006111c1565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d545f907fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009060ff16156115135760070154919050565b61151b6108da565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611563573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d589190614e59565b5f61159182612660565b905073ffffffffffffffffffffffffffffffffffffffff81166115d7576115d77f5fbd5717000000000000000000000000000000000000000000000000000000006111c1565b5f6115e0611715565b67ffffffffffffffff1690505f61163c846106447f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90503481111561166f5761166f7f34a7a93d000000000000000000000000000000000000000000000000000000006111c1565b611679838261266b565b5f61168486836126c8565b90505f6116918284614ef7565b905080156116a5576116a38782612790565b505b5f6116b08434614ef7565b90508015611701576117016116f97fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308a84612906565b61170b8786612958565b5050505050505050565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065474010000000000000000000000000000000000000000900467ffffffffffffffff165f8190036117d5576117696108da565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105199190614f0a565b90565b6117e181612a86565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60607fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600c01805461188490614cad565b80601f01602080910402602001604051908101604052809291908181526020018280546118b090614cad565b80156118fb5780601f106118d2576101008083540402835291602001916118fb565b820191905f5260205f20905b8154815290600101906020018083116118de57829003601f168201915b5050505050905090565b808210156104c1576104c17fccc9aa2e000000000000000000000000000000000000000000000000000000006111c1565b5f5f6119406108da565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b09190614e59565b905080841015611a2f578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a279190614e59565b949350505050565b611a27848373ffffffffffffffffffffffffffffffffffffffff16639f6542aa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa09190614f25565b61ffff16612b7c565b73ffffffffffffffffffffffffffffffffffffffff8116611aed57611aed7f0e88bf4b000000000000000000000000000000000000000000000000000000006111c1565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff166040517f8df80bd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529190911690638df80bd690602401602060405180830381865afa158015611b91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb59190614f5a565b6109dc576109dc7f0e88bf4b000000000000000000000000000000000000000000000000000000006111c1565b73ffffffffffffffffffffffffffffffffffffffff8116611c2657611c267f5fbd5717000000000000000000000000000000000000000000000000000000006111c1565b5f611c4f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b90508015801590611caa575080611ca77f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b10155b156104c1576104c17f7efcdb49000000000000000000000000000000000000000000000000000000006111c1565b5f5f611d257f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611d306114bc565b90505f611d3b612bcf565b905082821115611d4e575f935050505090565b8015611d6757611d5e6001612bf8565b5f935050505090565b6001935050505090565b5f5f611dc16105147f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b9050611dcc81612c35565b915081341015611dff57611dff7fb1296a8a000000000000000000000000000000000000000000000000000000006111c1565b5090565b606084848484604051602001611e1c9493929190614f73565b6040516020818303038152906040529050949350505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201524360348201525f908190605401604051602081830303815290604052805190602001209050611f1481611ee88387611e9b86612c56565b6040805160208082019590955273ffffffffffffffffffffffffffffffffffffffff9390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e026020526040812080549294507f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00929091908290611f7590614cad565b90501115611fa657611fa67ff82e65c3000000000000000000000000000000000000000000000000000000006111c1565b80611fb18682614d42565b503415611fc157611fc184612c9c565b50505092915050565b5f5f5f61200b6040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250612cfa565b90506120178188612e92565b156120295760015f925092505061203c565b61203681888888886130ad565b92509250505b94509492505050565b5f6120946105147f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f6120a082612c35565b90505f5f5f6120ae8661323a565b80546120b990614cad565b80601f01602080910402602001604051908101604052809291908181526020018280546120e590614cad565b80156121305780601f1061210757610100808354040283529160200191612130565b820191905f5260205f20905b81548152906001019060200180831161211357829003601f168201915b5050505050806020019051810190612148919061504a565b50919450925090507fffffffff0000000000000000000000000000000000000000000000000000000083167f8c625b0600000000000000000000000000000000000000000000000000000000146121c2576121c27fda6153bd000000000000000000000000000000000000000000000000000000006111c1565b5f6121cd83876126c8565b90505f6121da8287614ef7565b905061170b88858589858c61328d565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e01602052604090205480156122705761222783826132bc565b6122706122687fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308484612906565b505050565b5f61227e613324565b9050612302816122d26105147f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b5f9182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b61230d82600161334b565b61231e81612319611715565b612958565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b576905f90a35050565b61236d82613364565b61237782826121ea565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f905f90a25050565b602081015173ffffffffffffffffffffffffffffffffffffffff16156104c1578173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1614806124325750602081015173ffffffffffffffffffffffffffffffffffffffff1633145b156104c1576104c17f5fbd5717000000000000000000000000000000000000000000000000000000006111c1565b5f6124af6105147f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f6124bb82612c35565b90505f5f5f5f6124ca8761323a565b80546124d590614cad565b80601f016020809104026020016040519081016040528092919081815260200182805461250190614cad565b801561254c5780601f106125235761010080835404028352916020019161254c565b820191905f5260205f20905b81548152906001019060200180831161252f57829003601f168201915b5050505050806020019051810190612564919061504a565b929650909450925090507fffffffff0000000000000000000000000000000000000000000000000000000084167f686f768400000000000000000000000000000000000000000000000000000000146125e0576125e07fda6153bd000000000000000000000000000000000000000000000000000000006111c1565b5f818060200190518101906125f591906150ce565b90505f5f612603868a6126c8565b90505f61261487855f01518c6133bc565b90505f61262b88866020015187604001518e613529565b90508082612639858d614ef7565b6126439190614ef7565b61264d9190614ef7565b93505050506111b68986868a858d61328d565b5f61064981836136ab565b5f6126746136b6565b90505f6126a3825f8560405160200161268f91815260200190565b604051602081830303815290604052613789565b90506126b08285836137fa565b6126c2826126bc610c9e565b836137fa565b50505050565b5f6126d282611936565b90506106496127157fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b8461271e6108da565b73ffffffffffffffffffffffffffffffffffffffff16634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612766573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061278a9190614c92565b84612906565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600816127f17fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b90507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601612853578382600a015f8282546128439190615176565b9091555084935061064992505050565b5f61287473ffffffffffffffffffffffffffffffffffffffff831630613882565b9050612882828730886138b5565b5f6128a373ffffffffffffffffffffffffffffffffffffffff841630613882565b90505f6128b08383614ef7565b90508681146128e2576128e27fb1296a8a000000000000000000000000000000000000000000000000000000006111c1565b8085600a015f8282546128f59190615176565b909155509098975050505050505050565b80156126c25773ffffffffffffffffffffffffffffffffffffffff841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1461294e57612949848484846138b5565b6126c2565b6126c28282613949565b5f8281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602081905260409091205467ffffffffffffffff16801580159061299e57505f5b156129d8576040517ff7d2131a0000000000000000000000000000000000000000000000000000000081526004810185905260240161047a565b5f428267ffffffffffffffff1611156129fc576129f58483615189565b9050612a09565b612a068442615189565b90505b5f858152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b5f612a8f6108da565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612afb9190614f0a565b67ffffffffffffffff1690508167ffffffffffffffff165f03612b4157612b417f82323d2e000000000000000000000000000000000000000000000000000000006111c1565b808267ffffffffffffffff1611156104c1576104c17f82323d2e000000000000000000000000000000000000000000000000000000006111c1565b5f612710821115612bb157612bb17f197f19620000000000000000000000000000000000000000000000000000000083613969565b612710612bbe83856151a9565b612bc891906151c0565b9392505050565b5f7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c005b54919050565b7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c008054829082905f90612c2c908490614ef7565b90915550505050565b5f5f612c3f612bcf565b90508015612c4f57505f92915050565b5090919050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0060208190526040822080549083612c91836151f8565b909155509392505050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092349291612c2c908490615176565b60605f612d05613975565b80519091505f8167ffffffffffffffff811115612d2457612d246149da565b604051908082528060200260200182016040528015612d8757816020015b612d746040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081612d425790505b50855160208701209091505f90815b84811015612e86575f5f5f5f612dc48a8681518110612db757612db761522f565b60200260200101516139a0565b93509350935093505f5b8251811015612e765786838281518110612dea57612dea61522f565b60200260200101518051906020012003612e6e576040518060a001604052808c8881518110612e1b57612e1b61522f565b60200260200101518152602001868152602001851515815260200184815260200183815250898981518110612e5257612e5261522f565b602002602001018190525087612e67906151f8565b9750612e76565b600101612dce565b5050505050806001019050612d96565b50508152949350505050565b5f5f612e9d83613a8c565b90505f5b84518110156130a357848181518110612ebc57612ebc61522f565b60200260200101516040015161309b575f5b858281518110612ee057612ee061522f565b60200260200101516080015151811015613099575f868381518110612f0757612f0761522f565b6020026020010151608001518281518110612f2457612f2461522f565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f9b9190614f5a565b15801561307e57508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5335f5f1b866040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250604051602001613009919061525c565b60405160208183030381529060405261302190615272565b6040518463ffffffff1660e01b815260040161303f939291906152b4565b602060405180830381865afa15801561305a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307e9190614f5a565b15613090576001945050505050610649565b50600101612ece565b505b600101612ea1565b505f949350505050565b5f8080805b885181101561322b578881815181106130cd576130cd61522f565b602002602001015160400151613223575f5b8982815181106130f1576130f161522f565b60200260200101516080015151811015613221575f8a83815181106131185761311861522f565b60200260200101516080015182815181106131355761313561522f565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613188573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131ac9190614f5a565b1561321857836131e9576131e08a8a8a848f88815181106131cf576131cf61522f565b60200260200101515f01518c613dd0565b60019350613213565b6132138a8a8a848f88815181106132025761320261522f565b60200260200101515f01515f613dd0565b600194505b506001016130df565b505b6001016130b2565b505f9250509550959350505050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604081207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0090612bc8565b811561329f5761329d8583612790565b505b6132a986846132bc565b6132b286613364565b6110ba848261266b565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e009284929161331a908490614ef7565b9091555050505050565b5f7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00612bf2565b6104c1828260405180602001604052805f815250613ec0565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00906104c1905f614884565b5f73ffffffffffffffffffffffffffffffffffffffff83166133df57505f612bc8565b5f61341e7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cb4f54800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529190911690635cb4f54890602401608060405180830381865afa15801561348a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ae919061531f565b905080604001515f036134c4575f915050612bc8565b6134d2838260400151612b7c565b91506135216135157fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b86836020015185612906565b509392505050565b5f82515f146135d9575f61353c84613f88565b604081015190915073ffffffffffffffffffffffffffffffffffffffff16158061356857506020810151155b15613576575f915050611a27565b613584838260200151612b7c565b91506135d36135c77fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b87836040015185612906565b50611a27565b73ffffffffffffffffffffffffffffffffffffffff841615611a27578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361362f57505f611a27565b6136608261365b7faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b612b7c565b9050611a276136a37fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b868684612906565b5f612bc88383614030565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f44ab66800000000000000000000000000000000000000000000000000000000081527f526976657241697264726f700000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906344ab668090602401602060405180830381865afa158015613765573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105199190614c92565b6040517fdc69fdde0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063dc69fdde906137df9086908690600401615399565b602060405180830381865afa158015611a03573d5f5f3e3d5ffd5b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528416906340c10f19906044015f604051808303815f87803b158015613867575f5ffd5b505af1158015613879573d5f5f3e3d5ffd5b50505050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603156126c25773ffffffffffffffffffffffffffffffffffffffff831630146139285761294973ffffffffffffffffffffffffffffffffffffffff851684848461416b565b6126c273ffffffffffffffffffffffffffffffffffffffff851683836141cd565b6104c173ffffffffffffffffffffffffffffffffffffffff831682614220565b815f528060045260245ffd5b60606105197f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01614239565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0360205260408120805460609291839182919081906139e290614cad565b80601f0160208091040260200160405190810160405280929190818152602001828054613a0e90614cad565b8015613a595780601f10613a3057610100808354040283529160200191613a59565b820191905f5260205f20905b815481529060010190602001808311613a3c57829003601f168201915b5050505060018301549196505060ff169350613a7760028201614245565b9250613a828161431c565b9150509193509193565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa158015613b23573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613b6891908101906153e6565b905080515f03613cd9576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa158015613bdf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c039190614c92565b905073ffffffffffffffffffffffffffffffffffffffff811615613cd7576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa158015613c8f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613cd491908101906153e6565b91505b505b80515f613ce7826001615176565b67ffffffffffffffff811115613cff57613cff6149da565b604051908082528060200260200182016040528015613d28578160200160208202803683370190505b5090505f5b82811015613d8e57838181518110613d4757613d4761522f565b6020026020010151828281518110613d6157613d6161522f565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613d2d565b5085818381518110613da257613da261522f565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015295945050505050565b613ddb86848361432b565b5f7f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e005f8681526001828101602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117815560030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716179055905080546040805173ffffffffffffffffffffffffffffffffffffffff89811660208301526138799316918a91899188918891016040516020818303038152906040526143e4565b613eca8383614504565b73ffffffffffffffffffffffffffffffffffffffff83163b15612270577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548281035b613f1f5f8683806001019450866146b9565b613f55576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613f0d57817f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0054146108ca575f5ffd5b613fc06040518060600160405280606081526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5080516020808301919091205f9081527faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008028252604090819020815160608101835293845280549284019290925260019091015473ffffffffffffffffffffffffffffffffffffffff169082015290565b5f81831161413957505f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c01000000000000000000000000000000000000000000000000000000008316900361413757815f0361413157805483106140f0576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f818152600484016020526040902054909290915081156140f1575b50610649565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166141bf57803d873b1517106141bf57637939f4245f526004601cfd5b505f60605260405250505050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661421657803d853b151710614216576390b8ec185f526004601cfd5b505f603452505050565b5f385f3884865af16104c15763b12d13eb5f526004601cfd5b60605f612bc88361482b565b6060815f01805480602002602001604051908101604052809291908181526020015f905b82821015614311578382905f5260205f2001805461428690614cad565b80601f01602080910402602001604051908101604052809291908181526020018280546142b290614cad565b80156142fd5780601f106142d4576101008083540402835291602001916142fd565b820191905f5260205f20905b8154815290600101906020018083116142e057829003601f168201915b505050505081526020019060010190614269565b505050509050919050565b60605f612bc883600401614239565b3481111561435c5761435c7ff4e95a41000000000000000000000000000000000000000000000000000000006111c1565b73ffffffffffffffffffffffffffffffffffffffff83166143a0576143a07f99ef0388000000000000000000000000000000000000000000000000000000006111c1565b73ffffffffffffffffffffffffffffffffffffffff8216612270576122707f4bb7c205000000000000000000000000000000000000000000000000000000006111c1565b8115614477576040517f21be050a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906321be050a90849061444490899089908990889060040161549a565b5f604051808303818588803b15801561445b575f5ffd5b505af115801561446d573d5f5f3e3d5ffd5b50505050506110ba565b6040517f21be050a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906321be050a906144cf90889088908890879060040161549a565b5f604051808303815f87803b1580156144e6575f5ffd5b505af11580156144f8573d5f5f3e3d5ffd5b50505050505050505050565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f829003614560576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146146575780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa4600101614621565b50815f03614691576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550505050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906147139033908990889088906004016154d4565b6020604051808303815f875af192505050801561476b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261476891810190615524565b60015b6147e0573d808015614798576040519150601f19603f3d011682016040523d82523d5f602084013e61479d565b606091505b5080515f036147d8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611a27565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561487857602002820191905f5260205f20905b815481526020019060010190808311614864575b50505050509050919050565b50805461489090614cad565b5f825580601f1061489f575050565b601f0160209004905f5260205f20908101906109dc91905b80821115611dff575f81556001016148b7565b5f5f83601f8401126148da575f5ffd5b50813567ffffffffffffffff8111156148f1575f5ffd5b602083019150836020828501011115614908575f5ffd5b9250929050565b5f5f60208385031215614920575f5ffd5b823567ffffffffffffffff811115614936575f5ffd5b614942858286016148ca565b90969095509350505050565b5f6020828403121561495e575f5ffd5b5035919050565b5f5f5f60408486031215614977575f5ffd5b833560028110614985575f5ffd5b9250602084013567ffffffffffffffff8111156149a0575f5ffd5b6149ac868287016148ca565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff811681146109dc575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a2a57614a2a6149da565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a7757614a776149da565b604052919050565b5f67ffffffffffffffff821115614a9857614a986149da565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60608284031215614ad4575f5ffd5b614adc614a07565b90508135614ae9816149b9565b81526020820135614af9816149b9565b6020820152604082013567ffffffffffffffff811115614b17575f5ffd5b8201601f81018413614b27575f5ffd5b8035614b3a614b3582614a7f565b614a30565b818152856020838501011115614b4e575f5ffd5b816020840160208301375f6020838301015280604085015250505092915050565b5f5f60408385031215614b80575f5ffd5b8235614b8b816149b9565b9150602083013567ffffffffffffffff811115614ba6575f5ffd5b614bb285828601614ac4565b9150509250929050565b67ffffffffffffffff811681146109dc575f5ffd5b5f60208284031215614be1575f5ffd5b8135612bc881614bbc565b5f60208284031215614bfc575f5ffd5b8135612bc8816149b9565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f612bc86020830184614c07565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60208284031215614ca2575f5ffd5b8151612bc8816149b9565b600181811c90821680614cc157607f821691505b602082108103614cf8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561227057805f5260205f20601f840160051c81016020851015614d235750805b601f840160051c820191505b818110156108ca575f8155600101614d2f565b815167ffffffffffffffff811115614d5c57614d5c6149da565b614d7081614d6a8454614cad565b84614cfe565b6020601f821160018114614dc1575f8315614d8b5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556108ca565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614e0e5787850151825560209485019460019092019101614dee565b5084821015614e4a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215614e69575f5ffd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f6040830151606080840152611a276080840182614c07565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561064957610649614eca565b5f60208284031215614f1a575f5ffd5b8151612bc881614bbc565b5f60208284031215614f35575f5ffd5b815161ffff81168114612bc8575f5ffd5b80518015158114614f55575f5ffd5b919050565b5f60208284031215614f6a575f5ffd5b612bc882614f46565b7fffffffff000000000000000000000000000000000000000000000000000000008516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f610fed6080830184614c07565b80517fffffffff0000000000000000000000000000000000000000000000000000000081168114614f55575f5ffd5b5f615021614b3584614a7f565b9050828152838383011115615034575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f5f6080858703121561505d575f5ffd5b61506685614fe5565b93506020850151615076816149b9565b6040860151909350615087816149b9565b606086015190925067ffffffffffffffff8111156150a3575f5ffd5b8501601f810187136150b3575f5ffd5b6150c287825160208401615014565b91505092959194509250565b5f602082840312156150de575f5ffd5b815167ffffffffffffffff8111156150f4575f5ffd5b820160608185031215615105575f5ffd5b61510d614a07565b8151615118816149b9565b81526020820151615128816149b9565b6020820152604082015167ffffffffffffffff811115615146575f5ffd5b80830192505084601f83011261515a575f5ffd5b61516985835160208501615014565b6040820152949350505050565b8082018082111561064957610649614eca565b67ffffffffffffffff818116838216019081111561064957610649614eca565b808202811582820484141761064957610649614eca565b5f826151f3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361522857615228614eca565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b80516020808301519190811015614cf8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561530b57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152d7565b505060409390930193909352509392505050565b5f6080828403128015615330575f5ffd5b506040516080810167ffffffffffffffff81118282101715615354576153546149da565b6040528251615362816149b9565b81526020830151615372816149b9565b60208201526040838101519082015261538d60608401614f46565b60608201529392505050565b5f600484106153cf577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b83825260406020830152611a276040830184614c07565b5f602082840312156153f6575f5ffd5b815167ffffffffffffffff81111561540c575f5ffd5b8201601f8101841361541c575f5ffd5b805167ffffffffffffffff811115615436576154366149da565b8060051b61544660208201614a30565b91825260208184018101929081019087841115615461575f5ffd5b6020850194505b8385101561548f578451925061547d836149b9565b82825260209485019490910190615468565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152826040820152608060608201525f610fed6080830184614c07565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f610fed6080830184614c07565b5f60208284031215615534575f5ffd5b612bc882614fe556";
1400
1423
 
1401
1424
  type MembershipFacetConstructorParams =
1402
1425
  | [signer?: Signer]
@@ -383,7 +383,7 @@ const _abi = [
383
383
  ] as const;
384
384
 
385
385
  const _bytecode =
386
- "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b6130af806100ca5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063ade4c8fa14610038578063e8546e0714610074575b5f5ffd5b61004b610046366004611b97565b61007e565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007c610120565b005b5f3068929eee149b4bd21268540361009d5763ab143c065f526004601cfd5b3068929eee149b4bd21268557fe17a067c7963a59b6dfd65d33b053fdbea1c56500e2aae4f976d9eda4da9eb005460ff1615610105576040517f059519da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010e826101ae565b3868929eee149b4bd212685592915050565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff16610183576040517f77a399b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ac7fade4c8fa00000000000000000000000000000000000000000000000000000000610626565b565b7f9e34afa7b4d27d347d25d9d9dab4f1a106fa081382e6c4243e834d093e787d008054604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f937f06bd04a817647c31ee485c8a0baab96facd62dbfd4b475796bb17ca2c12f0000939092859273ffffffffffffffffffffffffffffffffffffffff909216916375794a3c916004808201926020929091908290030181865afa158015610264573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102889190611cda565b905061029881866080015161077b565b8354909450835f6102a883611cf1565b90915550505f818152600284016020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925584526001870183529281902084905584548851928901518983015160608b015193517f3bf5b8f40000000000000000000000000000000000000000000000000000000081529290951694633bf5b8f4946103639490938b929190600401611d99565b6020604051808303815f875af115801561037f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a39190611cda565b5060018201545f906103cb9073ffffffffffffffffffffffffffffffffffffffff16866107a1565b60058401549091505f906103f59073ffffffffffffffffffffffffffffffffffffffff16876107a1565b6040805160028082526060820183529293505f92909160208301908036833701905050905082815f8151811061042d5761042d611e0d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061047b5761047b611e0d565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f8bfc820f00000000000000000000000000000000000000000000000000000000815290881690638bfc820f906104dc908490600401611e3a565b5f604051808303815f87803b1580156104f3575f5ffd5b505af1158015610505573d5f5f3e3d5ffd5b5050505061051d8784848b60800151602001516108ea565b5060808801518051516040909101515f9161053b918a919087610d77565b905061054c88828b60a00151610f2d565b85546040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201523360248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906342842e0e906064015f604051808303815f87803b1580156105c0575f5ffd5b505af11580156105d2573d5f5f3e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff8b16925087915033907fe50fc3942f8a2d7e5a7c8fb9488499eba5255b41e18bc3f1b4791402976d1d0b905f90a450505050505050919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b00602052604090205460ff166106fa577fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b006020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561072c565b6040517ff2cfeefa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffff000000000000000000000000000000000000000000000000000000008216907f78f84e5b1c5c05be2b5ad3800781dd404d6d6c6302bc755c0fe20f58a33a7f22905f90a250565b5f5f5f6107888585611072565b91509150610796828261129b565b925050505b92915050565b5f5f604051806020016107b390611394565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff851660248201528590604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161088c93929101611e92565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526108c89291602001611ed7565b60405160208183030381529060405290506108e2816112ee565b949350505050565b6040805160018082528183019092525f91829190816020015b60608152602001906001900390816109035790505090506040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250815f8151811061096257610962611e0d565b60200260200101819052508573ffffffffffffffffffffffffffffffffffffffff16638fcd793d6040518060400160405280600681526020017f4d696e7465720000000000000000000000000000000000000000000000000000815250835f67ffffffffffffffff8111156109d9576109d96113ae565b604051908082528060200260200182016040528015610a1e57816020015b604080518082019091525f8152606060208201528152602001906001900390816109f75790505b506040518463ffffffff1660e01b8152600401610a3d93929190611f1f565b6020604051808303815f875af1158015610a59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7d9190611cda565b835190925015610bad576040805160018082528183019092525f91602080830190803683370190505090506001815f81518110610abc57610abc611e0d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1663ba201ba88460405180604001604052808a73ffffffffffffffffffffffffffffffffffffffff16815260200185604051602001610b4b9190611e3a565b6040516020818303038152906040528152506040518363ffffffff1660e01b8152600401610b7a92919061202b565b5f604051808303815f87803b158015610b91575f5ffd5b505af1158015610ba3573d5f5f3e3d5ffd5b5050505050610d6e565b60208301515115610cac575f5b836020015151811015610bf557610bed84602001518281518110610be057610be0611e0d565b6020026020010151611345565b600101610bba565b508573ffffffffffffffffffffffffffffffffffffffff1663ba201ba88360405180604001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018760200151604051602001610c4f9190611e3a565b6040516020818303038152906040528152506040518363ffffffff1660e01b8152600401610c7e92919061202b565b5f604051808303815f87803b158015610c95575f5ffd5b505af1158015610ca7573d5f5f3e3d5ffd5b505050505b6040830151515115610d6e578573ffffffffffffffffffffffffffffffffffffffff1663ba201ba88360405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018760400151604051602001610d119190612165565b6040516020818303038152906040528152506040518363ffffffff1660e01b8152600401610d4092919061202b565b5f604051808303815f87803b158015610d57575f5ffd5b505af1158015610d69573d5f5f3e3d5ffd5b505050505b50949350505050565b6040805160018082528183019092525f91829190602080830190803683370190505090506001815f81518110610daf57610daf611e0d565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101909101526040805160018082528183019092525f91816020015b604080518082019091525f815260606020820152815260200190600190039081610deb57905050905083815f81518110610e2757610e27611e0d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff909216909152604051610e5d91849101611e3a565b604051602081830303815290604052815f81518110610e7e57610e7e611e0d565b60209081029190910181015101526040517f8fcd793d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690638fcd793d90610ee290899089908690600401611f1f565b6020604051808303815f875af1158015610efe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190611cda565b979650505050505050565b6040805160018082528183019092525f916020808301908036833701905050905082815f81518110610f6157610f61611e0d565b6020908102919091018101919091526040517f2000000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660218201525f90603501604051602081830303815290604052610fe49061223e565b83516040517f921f717500000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff87169163921f71759161103e918591908790600401612283565b5f604051808303815f87803b158015611055575f5ffd5b505af1158015611067573d5f5f3e3d5ffd5b505050505050505050565b60408051336020808301919091528183018590524260608381019190915283518084038201815260809093019093528151910120825160c08101517f9e34afa7b4d27d347d25d9d9dab4f1a106fa081382e6c4243e834d093e787d00919073ffffffffffffffffffffffffffffffffffffffff166110f1573360c08201525b600682015460405173ffffffffffffffffffffffffffffffffffffffff9091169061111e602082016113a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828203810183526040601f9092011681810182527fdc9cc64500000000000000000000000000000000000000000000000000000000815230602082810182905283518085018552885473ffffffffffffffffffffffffffffffffffffffff1681529081018c90529251919285926111be923392909189906024016122dd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f40e47dfe0000000000000000000000000000000000000000000000000000000017905290516112449493929101612448565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112809291602001611ed7565b60405160208183030381529060405294505050509250929050565b5f818351602085015ff590508061079b57632b1c22465f52602080523d6040523d5f60603e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011660448101601cfd5b5f8151602083015ff090508061134057632b1c22465f52602080523d6040523d5f60603e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011660448101601cfd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116611389576113897fe6c4247b0000000000000000000000000000000000000000000000000000000061138c565b50565b805f5260045ffd5b6103a7806124c983390190565b61083f8061287083390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156113fe576113fe6113ae565b60405290565b6040516060810167ffffffffffffffff811182821017156113fe576113fe6113ae565b6040805190810167ffffffffffffffff811182821017156113fe576113fe6113ae565b604051610120810167ffffffffffffffff811182821017156113fe576113fe6113ae565b60405160c0810167ffffffffffffffff811182821017156113fe576113fe6113ae565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156114d8576114d86113ae565b604052919050565b5f82601f8301126114ef575f5ffd5b813567ffffffffffffffff811115611509576115096113ae565b61153a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611491565b81815284602083860101111561154e575f5ffd5b816020850160208301375f918101602001919091529392505050565b803567ffffffffffffffff81168114611340575f5ffd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611340575f5ffd5b80358015158114611340575f5ffd5b5f67ffffffffffffffff8211156115cc576115cc6113ae565b5060051b60200190565b60038110611389575f5ffd5b803560ff81168114611340575f5ffd5b5f82601f830112611601575f5ffd5b813561161461160f826115b3565b611491565b8082825260208201915060208360071b860101925085831115611635575f5ffd5b602085015b8381101561169e5760808188031215611651575f5ffd5b6116596113db565b813560078110611667575f5ffd5b81526020828101359082015261167f60408301611581565b604082015260608281013590820152835260209092019160800161163a565b5095945050505050565b5f82601f8301126116b7575f5ffd5b81356116c561160f826115b3565b808282526020820191506020606084028601019250858311156116e6575f5ffd5b602085015b8381101561169e5760608188031215611702575f5ffd5b61170a611404565b8135611715816115d6565b8152611723602083016115e2565b6020820152611734604083016115e2565b604082015283526020909201916060016116eb565b5f60608284031215611759575f5ffd5b611761611404565b9050813567ffffffffffffffff811115611779575f5ffd5b8201601f81018413611789575f5ffd5b803561179761160f826115b3565b8082825260208201915060208360061b8501019250868311156117b8575f5ffd5b6020840193505b8284101561181157604084880312156117d6575f5ffd5b6117de611427565b84356117e9816115d6565b81526117f7602086016115e2565b6020820152808352506020820191506040840193506117bf565b8452505050602082013567ffffffffffffffff81111561182f575f5ffd5b61183b848285016115f2565b602083015250604082013567ffffffffffffffff81111561185a575f5ffd5b611866848285016116a8565b60408301525092915050565b5f60808284031215611882575f5ffd5b61188a6113db565b9050611895826115a4565b8152602082013567ffffffffffffffff8111156118b0575f5ffd5b8201601f810184136118c0575f5ffd5b80356118ce61160f826115b3565b8082825260208201915060208360051b8501019250868311156118ef575f5ffd5b6020840193505b828410156119185761190784611581565b8252602093840193909101906118f6565b6020850152505050604082013567ffffffffffffffff811115611939575f5ffd5b61194584828501611749565b604083015250611957606083016115a4565b606082015292915050565b5f82601f830112611971575f5ffd5b813561197f61160f826115b3565b8082825260208201915060208360051b8601019250858311156119a0575f5ffd5b602085015b8381101561169e57803567ffffffffffffffff8111156119c3575f5ffd5b6119d2886020838a01016114e0565b845250602092830192016119a5565b5f606082840312156119f1575f5ffd5b6119f9611404565b9050813567ffffffffffffffff811115611a11575f5ffd5b82016101208185031215611a23575f5ffd5b611a2b61144a565b813567ffffffffffffffff811115611a41575f5ffd5b611a4d868285016114e0565b825250602082013567ffffffffffffffff811115611a69575f5ffd5b611a75868285016114e0565b6020830152506040828101359082015260608083013590820152611a9b6080830161156a565b6080820152611aac60a08301611581565b60a0820152611abd60c08301611581565b60c082015260e08281013590820152611ad96101008301611581565b610100820152825250602082013567ffffffffffffffff811115611afb575f5ffd5b611b0784828501611872565b602083015250604082013567ffffffffffffffff811115611b26575f5ffd5b61186684828501611962565b5f60208284031215611b42575f5ffd5b6040516020810167ffffffffffffffff81118282101715611b6557611b656113ae565b604052905080823567ffffffffffffffff811115611b81575f5ffd5b611b8d858286016114e0565b8252505092915050565b5f60208284031215611ba7575f5ffd5b813567ffffffffffffffff811115611bbd575f5ffd5b820160c08185031215611bce575f5ffd5b611bd661146e565b813567ffffffffffffffff811115611bec575f5ffd5b611bf8868285016114e0565b825250602082013567ffffffffffffffff811115611c14575f5ffd5b611c20868285016114e0565b602083015250604082013567ffffffffffffffff811115611c3f575f5ffd5b611c4b868285016114e0565b604083015250606082013567ffffffffffffffff811115611c6a575f5ffd5b611c76868285016114e0565b606083015250608082013567ffffffffffffffff811115611c95575f5ffd5b611ca1868285016119e1565b60808301525060a082013567ffffffffffffffff811115611cc0575f5ffd5b611ccc86828501611b32565b60a083015250949350505050565b5f60208284031215611cea575f5ffd5b5051919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d46577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60a081525f611dab60a0830188611d4d565b8281036020840152611dbd8188611d4d565b905073ffffffffffffffffffffffffffffffffffffffff861660408401528281036060840152611ded8186611d4d565b90508281036080840152611e018185611d4d565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b81811015611e8757835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611e53565b509095945050505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6108e26040830184611d4d565b5f81518060208401855e5f93019283525090919050565b5f6108e2611ee58386611ec0565b84611ec0565b73ffffffffffffffffffffffffffffffffffffffff81511682525f6020820151604060208501526108e26040850182611d4d565b606081525f611f316060830186611d4d565b828103602084015280855180835260208301915060208160051b840101602088015f5b83811015611fa4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018552611f8e838351611d4d565b6020958601959093509190910190600101611f54565b50508581036040870152865180825260208083019550909350600584901b82018101925087015f5b8481101561201c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838503018652612006848351611eeb565b6020968701969094509190910190600101611fcc565b50919998505050505050505050565b828152604060208201525f6108e26040830184611eeb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061138957611389612043565b5f8151808452602084019350602083015f5b828110156120fe5781518051600781106120ae576120ae612043565b808852506020810151602088015273ffffffffffffffffffffffffffffffffffffffff60408201511660408801526060810151606088015250608086019550602082019150600181019050612092565b5093949350505050565b5f8151808452602084019350602083015f5b828110156120fe578151805161212f81612070565b8088525060ff602082015116602088015260ff60408201511660408801525060608601955060208201915060018101905061211a565b602080825282516060838301528051608084018190525f929190910190829060a08501905b808310156121c5578351805161219f81612070565b835260209081015160ff168184015293909301926001929092019160409091019061218a565b50602086015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030160408601526122018184612080565b9250505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160608501526107968282612108565b8051602080830151919081101561227d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b838152606060208201525f61229b6060830185611d4d565b8281036040840152835180825260208086019201905f5b818110156122d05783518352602093840193909201916001016122b2565b5090979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83511660408201526020830151606082015260a060808201525f825161012060a08401526123596101c0840182611d4d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608483030160c08501526123948282611d4d565b915050604084015160e0840152606084015161010084015260808401516123c861012085018267ffffffffffffffff169052565b5060a084015173ffffffffffffffffffffffffffffffffffffffff81166101408501525060c084015173ffffffffffffffffffffffffffffffffffffffff81166101608501525060e084015161018084015261010084015173ffffffffffffffffffffffffffffffffffffffff81166101a0850152509695505050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000845116815273ffffffffffffffffffffffffffffffffffffffff602085015116602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f6124bf6080830184611d4d565b9594505050505056fe60806040526040516103a73803806103a78339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b607a8061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffd608060405234801561000f575f5ffd5b5060405161083f38038061083f83398101604081905261002e9161022d565b6100948380517f9c16cba5b9f2fcbd952b38bec34079e93cbe107475c15fc20705f4e704198a0080546020909301516001600160a01b03166001600160a01b031960e09390931c600160a01b02929092166001600160c01b031990931692909217179055565b61009e82826100a7565b5050505061032e565b60605f5f846001600160a01b0316846040516100c39190610318565b5f60405180830381855af49150503d805f81146100fb576040519150601f19603f3d011682016040523d82523d5f602084013e610100565b606091505b50909250905061011185838361011a565b95945050505050565b60608261012f5761012a8261017d565b610176565b815115801561014657506001600160a01b0384163b155b1561017357604051639996b31560e01b81526001600160a01b038516600482015260240160405180910390fd5b50805b9392505050565b80511561018d5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156101dc576101dc6101a6565b60405290565b604051601f8201601f191681016001600160401b038111828210171561020a5761020a6101a6565b604052919050565b80516001600160a01b0381168114610228575f5ffd5b919050565b5f5f5f8385036080811215610240575f5ffd5b604081121561024d575f5ffd5b506102566101ba565b84516001600160e01b03198116811461026d575f5ffd5b815261027b60208601610212565b6020820152925061028e60408501610212565b60608501519092506001600160401b038111156102a9575f5ffd5b8401601f810186136102b9575f5ffd5b80516001600160401b038111156102d2576102d26101a6565b6102e5601f8201601f19166020016101e2565b8181528760208385010111156102f9575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6105048061033b5f395ff3fe608060405260043610610021575f3560e01c8063ac9650d81461003257610028565b3661002857005b61003061005b565b005b610045610040366004610383565b6100d4565b60405161005291906103f4565b60405180910390f35b5f6100646100f8565b90508073ffffffffffffffffffffffffffffffffffffffff163b5f036100b6576040517f87c9fc3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b365f5f375f5f365f845af43d5f5f3e8080156100d0573d5ff35b3d5ffd5b606034156100e0575f5ffd5b6100f26100ed84846102e0565b610372565b92915050565b7f9c16cba5b9f2fcbd952b38bec34079e93cbe107475c15fc20705f4e704198a00545f9074010000000000000000000000000000000000000000900460e01b81806101777f9c16cba5b9f2fcbd952b38bec34079e93cbe107475c15fc20705f4e704198a005473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff000000000000000000000000000000000000000000000000000000005f3516602482015273ffffffffffffffffffffffffffffffffffffffff91909116908490604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161024b91906104b4565b5f60405180830381855afa9150503d805f8114610283576040519150601f19603f3d011682016040523d82523d5f602084013e610288565b606091505b5091509150816102c4576040517f391aa44500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808060200190518101906102d891906104ca565b935050505090565b5f60405190506020815281816020015280604001808360051b80868437820180851561035a575b8351870180356020820183375f38823584305af4610327573d5f873e3d86fd5b5082810384523d815260209384019381013d5f823e5f3d8201523d01601f0167ffffffffffffffe0169050818410610307575b806040528485820360401b1794505050505092915050565b8060401c8167ffffffffffffffff16f35b5f5f60208385031215610394575f5ffd5b823567ffffffffffffffff8111156103aa575f5ffd5b8301601f810185136103ba575f5ffd5b803567ffffffffffffffff8111156103d0575f5ffd5b8560208260051b84010111156103e4575f5ffd5b6020919091019590945092505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156104a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087528060208301602089015e5f6020828901015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168801019650505060208201915060208401935060018101905061041a565b50929695505050505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156104da575f5ffd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104fd575f5ffd5b939250505056";
386
+ "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b6130ad806100ca5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063ade4c8fa14610038578063e8546e0714610074575b5f5ffd5b61004b610046366004611b97565b61007e565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007c610120565b005b5f3068929eee149b4bd21268540361009d5763ab143c065f526004601cfd5b3068929eee149b4bd21268557fe17a067c7963a59b6dfd65d33b053fdbea1c56500e2aae4f976d9eda4da9eb005460ff1615610105576040517f059519da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010e826101ae565b3868929eee149b4bd212685592915050565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff16610183576040517f77a399b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ac7fade4c8fa00000000000000000000000000000000000000000000000000000000610626565b565b7f9e34afa7b4d27d347d25d9d9dab4f1a106fa081382e6c4243e834d093e787d008054604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f937f06bd04a817647c31ee485c8a0baab96facd62dbfd4b475796bb17ca2c12f0000939092859273ffffffffffffffffffffffffffffffffffffffff909216916375794a3c916004808201926020929091908290030181865afa158015610264573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102889190611cda565b905061029881866080015161077b565b8354909450835f6102a883611cf1565b90915550505f818152600284016020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925584526001870183529281902084905584548851928901518983015160608b015193517f3bf5b8f40000000000000000000000000000000000000000000000000000000081529290951694633bf5b8f4946103639490938b929190600401611d99565b6020604051808303815f875af115801561037f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a39190611cda565b5060018201545f906103cb9073ffffffffffffffffffffffffffffffffffffffff16866107a1565b60058401549091505f906103f59073ffffffffffffffffffffffffffffffffffffffff16876107a1565b6040805160028082526060820183529293505f92909160208301908036833701905050905082815f8151811061042d5761042d611e0d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061047b5761047b611e0d565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f8bfc820f00000000000000000000000000000000000000000000000000000000815290881690638bfc820f906104dc908490600401611e3a565b5f604051808303815f87803b1580156104f3575f5ffd5b505af1158015610505573d5f5f3e3d5ffd5b5050505061051d8784848b60800151602001516108ea565b5060808801518051516040909101515f9161053b918a919087610d77565b905061054c88828b60a00151610f2d565b85546040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201523360248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906342842e0e906064015f604051808303815f87803b1580156105c0575f5ffd5b505af11580156105d2573d5f5f3e3d5ffd5b505060405173ffffffffffffffffffffffffffffffffffffffff8b16925087915033907fe50fc3942f8a2d7e5a7c8fb9488499eba5255b41e18bc3f1b4791402976d1d0b905f90a450505050505050919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b00602052604090205460ff166106fa577fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b006020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561072c565b6040517ff2cfeefa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffff000000000000000000000000000000000000000000000000000000008216907f78f84e5b1c5c05be2b5ad3800781dd404d6d6c6302bc755c0fe20f58a33a7f22905f90a250565b5f5f5f6107888585611072565b91509150610796828261129b565b925050505b92915050565b5f5f604051806020016107b390611394565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff851660248201528590604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052905161088c93929101611e92565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526108c89291602001611ed7565b60405160208183030381529060405290506108e2816112ee565b949350505050565b6040805160018082528183019092525f91829190816020015b60608152602001906001900390816109035790505090506040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250815f8151811061096257610962611e0d565b60200260200101819052508573ffffffffffffffffffffffffffffffffffffffff16638fcd793d6040518060400160405280600681526020017f4d696e7465720000000000000000000000000000000000000000000000000000815250835f67ffffffffffffffff8111156109d9576109d96113ae565b604051908082528060200260200182016040528015610a1e57816020015b604080518082019091525f8152606060208201528152602001906001900390816109f75790505b506040518463ffffffff1660e01b8152600401610a3d93929190611f1f565b6020604051808303815f875af1158015610a59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7d9190611cda565b835190925015610bad576040805160018082528183019092525f91602080830190803683370190505090506001815f81518110610abc57610abc611e0d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1663ba201ba88460405180604001604052808a73ffffffffffffffffffffffffffffffffffffffff16815260200185604051602001610b4b9190611e3a565b6040516020818303038152906040528152506040518363ffffffff1660e01b8152600401610b7a92919061202b565b5f604051808303815f87803b158015610b91575f5ffd5b505af1158015610ba3573d5f5f3e3d5ffd5b5050505050610d6e565b60208301515115610cac575f5b836020015151811015610bf557610bed84602001518281518110610be057610be0611e0d565b6020026020010151611345565b600101610bba565b508573ffffffffffffffffffffffffffffffffffffffff1663ba201ba88360405180604001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018760200151604051602001610c4f9190611e3a565b6040516020818303038152906040528152506040518363ffffffff1660e01b8152600401610c7e92919061202b565b5f604051808303815f87803b158015610c95575f5ffd5b505af1158015610ca7573d5f5f3e3d5ffd5b505050505b6040830151515115610d6e578573ffffffffffffffffffffffffffffffffffffffff1663ba201ba88360405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018760400151604051602001610d119190612165565b6040516020818303038152906040528152506040518363ffffffff1660e01b8152600401610d4092919061202b565b5f604051808303815f87803b158015610d57575f5ffd5b505af1158015610d69573d5f5f3e3d5ffd5b505050505b50949350505050565b6040805160018082528183019092525f91829190602080830190803683370190505090506001815f81518110610daf57610daf611e0d565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101909101526040805160018082528183019092525f91816020015b604080518082019091525f815260606020820152815260200190600190039081610deb57905050905083815f81518110610e2757610e27611e0d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff909216909152604051610e5d91849101611e3a565b604051602081830303815290604052815f81518110610e7e57610e7e611e0d565b60209081029190910181015101526040517f8fcd793d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690638fcd793d90610ee290899089908690600401611f1f565b6020604051808303815f875af1158015610efe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190611cda565b979650505050505050565b6040805160018082528183019092525f916020808301908036833701905050905082815f81518110610f6157610f61611e0d565b6020908102919091018101919091526040517f2000000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660218201525f90603501604051602081830303815290604052610fe49061223e565b83516040517f921f717500000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff87169163921f71759161103e918591908790600401612283565b5f604051808303815f87803b158015611055575f5ffd5b505af1158015611067573d5f5f3e3d5ffd5b505050505050505050565b60408051336020808301919091528183018590524260608381019190915283518084038201815260809093019093528151910120825160c08101517f9e34afa7b4d27d347d25d9d9dab4f1a106fa081382e6c4243e834d093e787d00919073ffffffffffffffffffffffffffffffffffffffff166110f1573360c08201525b600682015460405173ffffffffffffffffffffffffffffffffffffffff9091169061111e602082016113a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828203810183526040601f9092011681810182527fdc9cc64500000000000000000000000000000000000000000000000000000000815230602082810182905283518085018552885473ffffffffffffffffffffffffffffffffffffffff1681529081018c90529251919285926111be923392909189906024016122dd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f40e47dfe0000000000000000000000000000000000000000000000000000000017905290516112449493929101612448565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112809291602001611ed7565b60405160208183030381529060405294505050509250929050565b5f818351602085015ff590508061079b57632b1c22465f52602080523d6040523d5f60603e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011660448101601cfd5b5f8151602083015ff090508061134057632b1c22465f52602080523d6040523d5f60603e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011660448101601cfd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116611389576113897fe6c4247b0000000000000000000000000000000000000000000000000000000061138c565b50565b805f5260045ffd5b6103a6806124c983390190565b61083e8061286f83390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156113fe576113fe6113ae565b60405290565b6040516060810167ffffffffffffffff811182821017156113fe576113fe6113ae565b6040805190810167ffffffffffffffff811182821017156113fe576113fe6113ae565b604051610120810167ffffffffffffffff811182821017156113fe576113fe6113ae565b60405160c0810167ffffffffffffffff811182821017156113fe576113fe6113ae565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156114d8576114d86113ae565b604052919050565b5f82601f8301126114ef575f5ffd5b813567ffffffffffffffff811115611509576115096113ae565b61153a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611491565b81815284602083860101111561154e575f5ffd5b816020850160208301375f918101602001919091529392505050565b803567ffffffffffffffff81168114611340575f5ffd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611340575f5ffd5b80358015158114611340575f5ffd5b5f67ffffffffffffffff8211156115cc576115cc6113ae565b5060051b60200190565b60038110611389575f5ffd5b803560ff81168114611340575f5ffd5b5f82601f830112611601575f5ffd5b813561161461160f826115b3565b611491565b8082825260208201915060208360071b860101925085831115611635575f5ffd5b602085015b8381101561169e5760808188031215611651575f5ffd5b6116596113db565b813560078110611667575f5ffd5b81526020828101359082015261167f60408301611581565b604082015260608281013590820152835260209092019160800161163a565b5095945050505050565b5f82601f8301126116b7575f5ffd5b81356116c561160f826115b3565b808282526020820191506020606084028601019250858311156116e6575f5ffd5b602085015b8381101561169e5760608188031215611702575f5ffd5b61170a611404565b8135611715816115d6565b8152611723602083016115e2565b6020820152611734604083016115e2565b604082015283526020909201916060016116eb565b5f60608284031215611759575f5ffd5b611761611404565b9050813567ffffffffffffffff811115611779575f5ffd5b8201601f81018413611789575f5ffd5b803561179761160f826115b3565b8082825260208201915060208360061b8501019250868311156117b8575f5ffd5b6020840193505b8284101561181157604084880312156117d6575f5ffd5b6117de611427565b84356117e9816115d6565b81526117f7602086016115e2565b6020820152808352506020820191506040840193506117bf565b8452505050602082013567ffffffffffffffff81111561182f575f5ffd5b61183b848285016115f2565b602083015250604082013567ffffffffffffffff81111561185a575f5ffd5b611866848285016116a8565b60408301525092915050565b5f60808284031215611882575f5ffd5b61188a6113db565b9050611895826115a4565b8152602082013567ffffffffffffffff8111156118b0575f5ffd5b8201601f810184136118c0575f5ffd5b80356118ce61160f826115b3565b8082825260208201915060208360051b8501019250868311156118ef575f5ffd5b6020840193505b828410156119185761190784611581565b8252602093840193909101906118f6565b6020850152505050604082013567ffffffffffffffff811115611939575f5ffd5b61194584828501611749565b604083015250611957606083016115a4565b606082015292915050565b5f82601f830112611971575f5ffd5b813561197f61160f826115b3565b8082825260208201915060208360051b8601019250858311156119a0575f5ffd5b602085015b8381101561169e57803567ffffffffffffffff8111156119c3575f5ffd5b6119d2886020838a01016114e0565b845250602092830192016119a5565b5f606082840312156119f1575f5ffd5b6119f9611404565b9050813567ffffffffffffffff811115611a11575f5ffd5b82016101208185031215611a23575f5ffd5b611a2b61144a565b813567ffffffffffffffff811115611a41575f5ffd5b611a4d868285016114e0565b825250602082013567ffffffffffffffff811115611a69575f5ffd5b611a75868285016114e0565b6020830152506040828101359082015260608083013590820152611a9b6080830161156a565b6080820152611aac60a08301611581565b60a0820152611abd60c08301611581565b60c082015260e08281013590820152611ad96101008301611581565b610100820152825250602082013567ffffffffffffffff811115611afb575f5ffd5b611b0784828501611872565b602083015250604082013567ffffffffffffffff811115611b26575f5ffd5b61186684828501611962565b5f60208284031215611b42575f5ffd5b6040516020810167ffffffffffffffff81118282101715611b6557611b656113ae565b604052905080823567ffffffffffffffff811115611b81575f5ffd5b611b8d858286016114e0565b8252505092915050565b5f60208284031215611ba7575f5ffd5b813567ffffffffffffffff811115611bbd575f5ffd5b820160c08185031215611bce575f5ffd5b611bd661146e565b813567ffffffffffffffff811115611bec575f5ffd5b611bf8868285016114e0565b825250602082013567ffffffffffffffff811115611c14575f5ffd5b611c20868285016114e0565b602083015250604082013567ffffffffffffffff811115611c3f575f5ffd5b611c4b868285016114e0565b604083015250606082013567ffffffffffffffff811115611c6a575f5ffd5b611c76868285016114e0565b606083015250608082013567ffffffffffffffff811115611c95575f5ffd5b611ca1868285016119e1565b60808301525060a082013567ffffffffffffffff811115611cc0575f5ffd5b611ccc86828501611b32565b60a083015250949350505050565b5f60208284031215611cea575f5ffd5b5051919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d46577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60a081525f611dab60a0830188611d4d565b8281036020840152611dbd8188611d4d565b905073ffffffffffffffffffffffffffffffffffffffff861660408401528281036060840152611ded8186611d4d565b90508281036080840152611e018185611d4d565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b81811015611e8757835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611e53565b509095945050505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6108e26040830184611d4d565b5f81518060208401855e5f93019283525090919050565b5f6108e2611ee58386611ec0565b84611ec0565b73ffffffffffffffffffffffffffffffffffffffff81511682525f6020820151604060208501526108e26040850182611d4d565b606081525f611f316060830186611d4d565b828103602084015280855180835260208301915060208160051b840101602088015f5b83811015611fa4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018552611f8e838351611d4d565b6020958601959093509190910190600101611f54565b50508581036040870152865180825260208083019550909350600584901b82018101925087015f5b8481101561201c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838503018652612006848351611eeb565b6020968701969094509190910190600101611fcc565b50919998505050505050505050565b828152604060208201525f6108e26040830184611eeb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6003811061138957611389612043565b5f8151808452602084019350602083015f5b828110156120fe5781518051600781106120ae576120ae612043565b808852506020810151602088015273ffffffffffffffffffffffffffffffffffffffff60408201511660408801526060810151606088015250608086019550602082019150600181019050612092565b5093949350505050565b5f8151808452602084019350602083015f5b828110156120fe578151805161212f81612070565b8088525060ff602082015116602088015260ff60408201511660408801525060608601955060208201915060018101905061211a565b602080825282516060838301528051608084018190525f929190910190829060a08501905b808310156121c5578351805161219f81612070565b835260209081015160ff168184015293909301926001929092019160409091019061218a565b50602086015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030160408601526122018184612080565b9250505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160608501526107968282612108565b8051602080830151919081101561227d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b838152606060208201525f61229b6060830185611d4d565b8281036040840152835180825260208086019201905f5b818110156122d05783518352602093840193909201916001016122b2565b5090979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83511660408201526020830151606082015260a060808201525f825161012060a08401526123596101c0840182611d4d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608483030160c08501526123948282611d4d565b915050604084015160e0840152606084015161010084015260808401516123c861012085018267ffffffffffffffff169052565b5060a084015173ffffffffffffffffffffffffffffffffffffffff81166101408501525060c084015173ffffffffffffffffffffffffffffffffffffffff81166101608501525060e084015161018084015261010084015173ffffffffffffffffffffffffffffffffffffffff81166101a0850152509695505050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000845116815273ffffffffffffffffffffffffffffffffffffffff602085015116602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f6124bf6080830184611d4d565b9594505050505056fe60806040526040516103a63803806103a68339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b607a8061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffd608060405234801561000f575f5ffd5b5060405161083e38038061083e83398101604081905261002e9161022c565b6100948380517f9c16cba5b9f2fcbd952b38bec34079e93cbe107475c15fc20705f4e704198a0080546020909301516001600160a01b03166001600160a01b031960e09390931c600160a01b02929092166001600160c01b031990931692909217179055565b61009e82826100a7565b5050505061032d565b60605f5f846001600160a01b0316846040516100c39190610317565b5f60405180830381855af49150503d805f81146100fb576040519150601f19603f3d011682016040523d82523d5f602084013e610100565b606091505b50909250905061011185838361011a565b95945050505050565b60608261012f5761012a8261017d565b610176565b815115801561014657506001600160a01b0384163b155b1561017357604051639996b31560e01b81526001600160a01b038516600482015260240160405180910390fd5b50805b9392505050565b80511561018c57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156101db576101db6101a5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610209576102096101a5565b604052919050565b80516001600160a01b0381168114610227575f5ffd5b919050565b5f5f5f838503608081121561023f575f5ffd5b604081121561024c575f5ffd5b506102556101b9565b84516001600160e01b03198116811461026c575f5ffd5b815261027a60208601610211565b6020820152925061028d60408501610211565b60608501519092506001600160401b038111156102a8575f5ffd5b8401601f810186136102b8575f5ffd5b80516001600160401b038111156102d1576102d16101a5565b6102e4601f8201601f19166020016101e1565b8181528760208385010111156102f8575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6105048061033a5f395ff3fe608060405260043610610021575f3560e01c8063ac9650d81461003257610028565b3661002857005b61003061005b565b005b610045610040366004610383565b6100d4565b60405161005291906103f4565b60405180910390f35b5f6100646100f8565b90508073ffffffffffffffffffffffffffffffffffffffff163b5f036100b6576040517f87c9fc3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b365f5f375f5f365f845af43d5f5f3e8080156100d0573d5ff35b3d5ffd5b606034156100e0575f5ffd5b6100f26100ed84846102e0565b610372565b92915050565b7f9c16cba5b9f2fcbd952b38bec34079e93cbe107475c15fc20705f4e704198a00545f9074010000000000000000000000000000000000000000900460e01b81806101777f9c16cba5b9f2fcbd952b38bec34079e93cbe107475c15fc20705f4e704198a005473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff000000000000000000000000000000000000000000000000000000005f3516602482015273ffffffffffffffffffffffffffffffffffffffff91909116908490604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161024b91906104b4565b5f60405180830381855afa9150503d805f8114610283576040519150601f19603f3d011682016040523d82523d5f602084013e610288565b606091505b5091509150816102c4576040517f391aa44500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808060200190518101906102d891906104ca565b935050505090565b5f60405190506020815281816020015280604001808360051b80868437820180851561035a575b8351870180356020820183375f38823584305af4610327573d5f873e3d86fd5b5082810384523d815260209384019381013d5f823e5f3d8201523d01601f0167ffffffffffffffe0169050818410610307575b806040528485820360401b1794505050505092915050565b8060401c8167ffffffffffffffff16f35b5f5f60208385031215610394575f5ffd5b823567ffffffffffffffff8111156103aa575f5ffd5b8301601f810185136103ba575f5ffd5b803567ffffffffffffffff8111156103d0575f5ffd5b8560208260051b84010111156103e4575f5ffd5b6020919091019590945092505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156104a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087528060208301602089015e5f6020828901015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168801019650505060208201915060208401935060018101905061041a565b50929695505050505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156104da575f5ffd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104fd575f5ffd5b939250505056";
387
387
 
388
388
  type MockLegacyArchitectConstructorParams =
389
389
  | [signer?: Signer]
@@ -7,6 +7,10 @@ import type { PromiseOrValue } from "../common";
7
7
  import type { SimpleApp, SimpleAppInterface } from "../SimpleApp";
8
8
 
9
9
  const _abi = [
10
+ {
11
+ type: "receive",
12
+ stateMutability: "payable",
13
+ },
10
14
  {
11
15
  type: "function",
12
16
  name: "accessDuration",
@@ -316,6 +320,19 @@ const _abi = [
316
320
  outputs: [],
317
321
  stateMutability: "nonpayable",
318
322
  },
323
+ {
324
+ type: "function",
325
+ name: "withdrawETH",
326
+ inputs: [
327
+ {
328
+ name: "recipient",
329
+ type: "address",
330
+ internalType: "address",
331
+ },
332
+ ],
333
+ outputs: [],
334
+ stateMutability: "nonpayable",
335
+ },
319
336
  {
320
337
  type: "event",
321
338
  name: "Initialized",
@@ -374,6 +391,44 @@ const _abi = [
374
391
  ],
375
392
  anonymous: false,
376
393
  },
394
+ {
395
+ type: "event",
396
+ name: "PricingUpdated",
397
+ inputs: [
398
+ {
399
+ name: "installPrice",
400
+ type: "uint256",
401
+ indexed: false,
402
+ internalType: "uint256",
403
+ },
404
+ {
405
+ name: "accessDuration",
406
+ type: "uint48",
407
+ indexed: false,
408
+ internalType: "uint48",
409
+ },
410
+ ],
411
+ anonymous: false,
412
+ },
413
+ {
414
+ type: "event",
415
+ name: "Withdrawal",
416
+ inputs: [
417
+ {
418
+ name: "recipient",
419
+ type: "address",
420
+ indexed: true,
421
+ internalType: "address",
422
+ },
423
+ {
424
+ name: "amount",
425
+ type: "uint256",
426
+ indexed: false,
427
+ internalType: "uint256",
428
+ },
429
+ ],
430
+ anonymous: false,
431
+ },
377
432
  {
378
433
  type: "error",
379
434
  name: "AlreadyInitialized",
@@ -389,6 +444,11 @@ const _abi = [
389
444
  name: "NewOwnerIsZeroAddress",
390
445
  inputs: [],
391
446
  },
447
+ {
448
+ type: "error",
449
+ name: "NoBalanceToWithdraw",
450
+ inputs: [],
451
+ },
392
452
  {
393
453
  type: "error",
394
454
  name: "NoHandoverRequest",
@@ -404,10 +464,15 @@ const _abi = [
404
464
  name: "Unauthorized",
405
465
  inputs: [],
406
466
  },
467
+ {
468
+ type: "error",
469
+ name: "ZeroAddress",
470
+ inputs: [],
471
+ },
407
472
  ] as const;
408
473
 
409
474
  const _bytecode =
410
- "0x6080604052348015600e575f5ffd5b50610ff98061001c5f395ff3fe608060405260043610610123575f3560e01c8063715018a6116100a1578063a41c85be11610071578063f04e283e11610057578063f04e283e146102ed578063f2fde38b14610300578063fee81cf414610313575f5ffd5b8063a41c85be146102aa578063ae5628c6146102cc575f5ffd5b8063715018a61461024e5780638a91b0e3146102305780638da5cb5b14610256578063a1308f2714610289575f5ffd5b80632e7ad41f116100f6578063452c04b1116100dc578063452c04b1146101ef57806354d1f13d146102285780636d61fe7014610230575f5ffd5b80632e7ad41f146101af57806336edab1f146101d0575f5ffd5b806301ffc9a7146101275780630a88fcad1461015b5780632382f0461461018657806325692962146101a7575b5f5ffd5b348015610132575f5ffd5b5061014661014136600461098b565b610344565b60405190151581526020015b60405180910390f35b348015610166575f5ffd5b5061016f610428565b60405165ffffffffffff9091168152602001610152565b348015610191575f5ffd5b506101a56101a03660046109eb565b61045e565b005b6101a56104e2565b3480156101ba575f5ffd5b506101c361052f565b6040516101529190610a15565b3480156101db575f5ffd5b506101a56101ea366004610abf565b6105a7565b3480156101fa575f5ffd5b506102036106b8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b6101a56106c1565b34801561023b575f5ffd5b506101a561024a366004610b89565b5050565b6101a56106fa565b348015610261575f5ffd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610203565b348015610294575f5ffd5b5061029d61070d565b6040516101529190610bc8565b3480156102b5575f5ffd5b506102be6107b8565b604051908152602001610152565b3480156102d7575f5ffd5b506102e06107e1565b6040516101529190610cf9565b6101a56102fb366004610e00565b610808565b6101a561030e366004610e00565b610845565b34801561031e575f5ffd5b506102be61032d366004610e00565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fae5628c60000000000000000000000000000000000000000000000000000000014806103d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f46c0c1b400000000000000000000000000000000000000000000000000000000145b8061042257507fffffffff0000000000000000000000000000000000000000000000000000000082167fc5c2a9bd00000000000000000000000000000000000000000000000000000000145b92915050565b5f6104597f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be035465ffffffffffff1690565b905090565b61046661086b565b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be02919091557f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be0380547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff909216919091179055565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f5fa250565b60605f7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be006001810180546040805160208084028201810190925282815293945083018282801561059c57602002820191905f5260205f20905b815481526020019060010190808311610588575b505050505091505090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156105f85760018160011c14303b106105ef5763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610602886108a0565b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be008061062f888a83610ee3565b5061063e60018201878761092e565b506002810184905560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff841617905580156106ae576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050505050565b5f610459610905565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f5fa2565b61070261086b565b61070b5f6108a0565b565b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be00805460609190819061073f90610e46565b80601f016020809104026020016040519081016040528092919081815260200182805461076b90610e46565b801561059c5780601f1061078d5761010080835404028352916020019161059c565b820191905f5260205f20905b8154815290600101906020018083116107995750939695505050505050565b5f6104597f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be025490565b61080560405180606001604052806060815260200160608152602001606081525090565b90565b61081061086b565b63389a75e1600c52805f526020600c20805442111561083657636f5e88185f526004601cfd5b5f9055610842816108a0565b50565b61084d61086b565b8060601b61086257637448fbae5f526004601cfd5b610842816108a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461070b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f6104597fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275490565b828054828255905f5260205f20908101928215610967579160200282015b8281111561096757823582559160200191906001019061094c565b50610973929150610977565b5090565b5b80821115610973575f8155600101610978565b5f6020828403121561099b575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146109ca575f5ffd5b9392505050565b803565ffffffffffff811681146109e6575f5ffd5b919050565b5f5f604083850312156109fc575f5ffd5b82359150610a0c602084016109d1565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015610a4c578351835260209384019390920191600101610a2e565b509095945050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e6575f5ffd5b5f5f83601f840112610a8a575f5ffd5b50813567ffffffffffffffff811115610aa1575f5ffd5b602083019150836020828501011115610ab8575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215610ad5575f5ffd5b610ade88610a57565b9650602088013567ffffffffffffffff811115610af9575f5ffd5b610b058a828b01610a7a565b909750955050604088013567ffffffffffffffff811115610b24575f5ffd5b8801601f81018a13610b34575f5ffd5b803567ffffffffffffffff811115610b4a575f5ffd5b8a60208260051b8401011115610b5e575f5ffd5b6020919091019450925060608801359150610b7b608089016109d1565b905092959891949750929550565b5f5f60208385031215610b9a575f5ffd5b823567ffffffffffffffff811115610bb0575f5ffd5b610bbc85828601610a7a565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8151808452602084019350602083015f5b82811015610c9d5781517fffffffff00000000000000000000000000000000000000000000000000000000815116875263ffffffff602082015116602088015260408101511515604088015260608101511515606088015250608086019550602082019150600181019050610c2d565b5093949350505050565b5f8151808452602084019350602083015f5b82811015610c9d5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101610cb9565b602080825282516060838301528051608084018190525f929190910190829060a08501905b80831015610d7e5783517fffffffff00000000000000000000000000000000000000000000000000000000815116835260208101511515602084015260408101511515604084015250606082019150602084019350600183019250610d1e565b50602086015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858203016040860152610dba8184610c1b565b9250505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016060850152610df78282610ca7565b95945050505050565b5f60208284031215610e10575f5ffd5b6109ca82610a57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680610e5a57607f821691505b602082108103610e91577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ede57805f5260205f20601f840160051c81016020851015610ebc5750805b601f840160051c820191505b81811015610edb575f8155600101610ec8565b50505b505050565b67ffffffffffffffff831115610efb57610efb610e19565b610f0f83610f098354610e46565b83610e97565b5f601f841160018114610f5f575f8515610f295750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610edb565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b82811015610fac5786850135825560209485019460019092019101610f8c565b5086821015610fe7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b018355505050505056";
475
+ "0x6080604052348015600e575f5ffd5b506111b08061001c5f395ff3fe608060405260043610610140575f3560e01c80636d61fe70116100bb578063a41c85be11610071578063f04e283e11610057578063f04e283e1461032f578063f2fde38b14610342578063fee81cf414610355575f5ffd5b8063a41c85be146102ec578063ae5628c61461030e575f5ffd5b80638a91b0e3116100a15780638a91b0e3146102725780638da5cb5b14610298578063a1308f27146102cb575f5ffd5b80636d61fe7014610272578063715018a614610290575f5ffd5b80632e7ad41f11610110578063452c04b1116100f6578063452c04b11461021257806354d1f13d1461024b578063690d832014610253575f5ffd5b80632e7ad41f146101d257806336edab1f146101f3575f5ffd5b806301ffc9a71461014c5780630a88fcad146101805780632382f046146101ab57806325692962146101ca575f5ffd5b36610148575b005b5f5ffd5b348015610157575f5ffd5b5061016b610166366004610b42565b610386565b60405190151581526020015b60405180910390f35b34801561018b575f5ffd5b5061019461046a565b60405165ffffffffffff9091168152602001610177565b3480156101b6575f5ffd5b506101466101c5366004610ba2565b6104a0565b610146610581565b3480156101dd575f5ffd5b506101e66105ce565b6040516101779190610bcc565b3480156101fe575f5ffd5b5061014661020d366004610c76565b610646565b34801561021d575f5ffd5b50610226610757565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610177565b610146610760565b34801561025e575f5ffd5b5061014661026d366004610d40565b610799565b34801561027d575f5ffd5b5061014661028c366004610d59565b5050565b610146610875565b3480156102a3575f5ffd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610226565b3480156102d6575f5ffd5b506102df610888565b6040516101779190610d98565b3480156102f7575f5ffd5b50610300610933565b604051908152602001610177565b348015610319575f5ffd5b5061032261095c565b6040516101779190610ec9565b61014661033d366004610d40565b610983565b610146610350366004610d40565b6109c0565b348015610360575f5ffd5b5061030061036f366004610d40565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fae5628c600000000000000000000000000000000000000000000000000000000148061041857507fffffffff0000000000000000000000000000000000000000000000000000000082167f46c0c1b400000000000000000000000000000000000000000000000000000000145b8061046457507fffffffff0000000000000000000000000000000000000000000000000000000082167fc5c2a9bd00000000000000000000000000000000000000000000000000000000145b92915050565b5f61049b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be035465ffffffffffff1690565b905090565b6104a86109e6565b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be028290557f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be0380547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff831690811790915560408051848152602081019290925280517f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be00927f98dae91994793f47b29bee1a4ebfd76c60d7b1c071e23c6926cff278ebac379892908290030190a1505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f5fa250565b60605f7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be006001810180546040805160208084028201810190925282815293945083018282801561063b57602002820191905f5260205f20905b815481526020019060010190808311610627575b505050505091505090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106975760018160011c14303b1061068e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506106a188610a1b565b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be00806106ce888a8361109a565b506106dd600182018787610ae5565b506002810184905560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff8416179055801561074d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050505050565b5f61049b610a80565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f5fa2565b6107a16109e6565b73ffffffffffffffffffffffffffffffffffffffff81166107e5576107e57fd92e233d00000000000000000000000000000000000000000000000000000000610aa9565b475f819003610817576108177fbbd8170800000000000000000000000000000000000000000000000000000000610aa9565b6108218282610ab1565b8173ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161086991815260200190565b60405180910390a25050565b61087d6109e6565b6108865f610a1b565b565b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be0080546060919081906108ba90610ffd565b80601f01602080910402602001604051908101604052809291908181526020018280546108e690610ffd565b801561063b5780601f106109085761010080835404028352916020019161063b565b820191905f5260205f20905b8154815290600101906020018083116109145750939695505050505050565b5f61049b7f83d7ef17df984d8e84ee79017942cb0329f48e2d537ef8c418bc299c6878be025490565b61098060405180606001604052806060815260200160608152602001606081525090565b90565b61098b6109e6565b63389a75e1600c52805f526020600c2080544211156109b157636f5e88185f526004601cfd5b5f90556109bd81610a1b565b50565b6109c86109e6565b8060601b6109dd57637448fbae5f526004601cfd5b6109bd81610a1b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610886576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f61049b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275490565b805f5260045ffd5b61028c73ffffffffffffffffffffffffffffffffffffffff8316825f385f3884865af161028c5763b12d13eb5f526004601cfd5b828054828255905f5260205f20908101928215610b1e579160200282015b82811115610b1e578235825591602001919060010190610b03565b50610b2a929150610b2e565b5090565b5b80821115610b2a575f8155600101610b2f565b5f60208284031215610b52575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b81575f5ffd5b9392505050565b803565ffffffffffff81168114610b9d575f5ffd5b919050565b5f5f60408385031215610bb3575f5ffd5b82359150610bc360208401610b88565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015610c03578351835260209384019390920191600101610be5565b509095945050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b9d575f5ffd5b5f5f83601f840112610c41575f5ffd5b50813567ffffffffffffffff811115610c58575f5ffd5b602083019150836020828501011115610c6f575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215610c8c575f5ffd5b610c9588610c0e565b9650602088013567ffffffffffffffff811115610cb0575f5ffd5b610cbc8a828b01610c31565b909750955050604088013567ffffffffffffffff811115610cdb575f5ffd5b8801601f81018a13610ceb575f5ffd5b803567ffffffffffffffff811115610d01575f5ffd5b8a60208260051b8401011115610d15575f5ffd5b6020919091019450925060608801359150610d3260808901610b88565b905092959891949750929550565b5f60208284031215610d50575f5ffd5b610b8182610c0e565b5f5f60208385031215610d6a575f5ffd5b823567ffffffffffffffff811115610d80575f5ffd5b610d8c85828601610c31565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8151808452602084019350602083015f5b82811015610e6d5781517fffffffff00000000000000000000000000000000000000000000000000000000815116875263ffffffff602082015116602088015260408101511515604088015260608101511515606088015250608086019550602082019150600181019050610dfd565b5093949350505050565b5f8151808452602084019350602083015f5b82811015610e6d5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101610e89565b602080825282516060838301528051608084018190525f929190910190829060a08501905b80831015610f4e5783517fffffffff00000000000000000000000000000000000000000000000000000000815116835260208101511515602084015260408101511515604084015250606082019150602084019350600183019250610eee565b50602086015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858203016040860152610f8a8184610deb565b9250505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016060850152610fc78282610e77565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c9082168061101157607f821691505b602082108103611048577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561109557805f5260205f20601f840160051c810160208510156110735750805b601f840160051c820191505b81811015611092575f815560010161107f565b50505b505050565b67ffffffffffffffff8311156110b2576110b2610fd0565b6110c6836110c08354610ffd565b8361104e565b5f601f841160018114611116575f85156110e05750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611092565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156111635786850135825560209485019460019092019101611143565b508682101561119e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b018355505050505056";
411
476
 
412
477
  type SimpleAppConstructorParams =
413
478
  | [signer?: Signer]