@latticexyz/world-modules 2.0.0-main-57d8965d → 2.0.0-main-de2decea

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.
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAccessInWorldContext","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstall","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallRoot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallRootTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPublicAccess","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556040516200003390620000f6565b604051809103906000f08015801562000050573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556200009a613a3160f11b6b756e69717565456e7469747960a01b647461626c6560d81b620000b1565b602155348015620000aa57600080fd5b506200012c565b6000620000c16070601062000104565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b613f6d8062017c9883390190565b808201808211156200012657634e487b7160e01b600052601160045260246000fd5b92915050565b62017b5b806200013d6000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c806378cdebf911620000c0578063974884d5116200008b578063ba414fa6116200006e578063ba414fa614620001fb578063e20c9f711462000216578063fa7626d4146200022057600080fd5b8063974884d514620001e7578063b5508aa914620001f157600080fd5b806378cdebf914620001b057806385226c8114620001ba5780638a5fc88814620001d3578063916a17c614620001dd57600080fd5b80634f95666211620001015780634f95666214620001795780635ecdf433146200018357806366d9a9a0146200018d578063786bd7bc14620001a657600080fd5b80630a9254e414620001375780631ed7831c14620001435780633e5e3c2314620001655780633f7286f4146200016f575b600080fd5b620001416200022e565b005b6200014d62000375565b6040516200015c919062002859565b60405180910390f35b6200014d620003d9565b6200014d6200043b565b620001416200049d565b62000141620007ae565b6200019762000915565b6040516200015c9190620028a8565b6200014162000a1d565b6200014162000b07565b620001c462000cbd565b6040516200015c9190620029cb565b6200014162000d97565b6200019762001245565b6200014162001344565b620001c462001497565b6200020562001571565b60405190151581526020016200015c565b6200014d620016bd565b600054620002059060ff1681565b6040516200023c90620027f7565b604051809103906000f08015801562000259573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de8620002a06200171f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002fa57600080fd5b505af11580156200030f573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550620003739050565b565b6060600d805480602002602001604051908101604052809291908181526020018280548015620003cf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620003b0575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b602154601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da92620004e69291909116906024810162002a47565b600060405180830381600087803b1580156200050157600080fd5b505af115801562000516573d6000803e3d6000fd5b50506040517f06447d56000000000000000000000000000000000000000000000000000000008152739c0257114eb9399a2985f8e75dad7600c5d89fe3600482018190529250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d5690602401600060405180830381600087803b1580156200059757600080fd5b505af1158015620005ac573d6000803e3d6000fd5b5050601f5460009250620005ca91506001600160a01b03166200182a565b9050620005e2620005db8462001899565b82620018e0565b601f546200061190620005fe906001600160a01b03166200182a565b6200060b83600162002a81565b620018e0565b62000620620005fe8462001899565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fd787b73700000000000000000000000000000000000000000000000000000000620006d2620006cc7f74620000000000000000000000000000000000000000000000000000000000007f756e69717565456e7469747900000000000000000000000000000000000000007f7461626c6500000000000000000000000000000000000000000000000000000062001a4c565b62001ac6565b85604051602401620006e692919062002a97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200075a9160040162002ac4565b600060405180830381600087803b1580156200077557600080fd5b505af11580156200078a573d6000803e3d6000fd5b5050601f54620007a992506001600160a01b0316905084607b62001c00565b505050565b6021546040805180820190915260208082527f696e7374616c6c526f6f7420756e6971756520656e74697479206d6f64756c6590820152620007f09062001ccb565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e926200084f9291909116906024810162002a47565b600060405180830381600087803b1580156200086a57600080fd5b505af11580156200087f573d6000803e3d6000fd5b505050506200088d62001f9f565b620008b160405180606001604052806027815260200162017afd6027913962001ccb565b601f54600090620008cb906001600160a01b03166200182a565b9050620008d762001f9f565b620008e6620005db8362001899565b601f546200090290620005fe906001600160a01b03166200182a565b62000911620005fe8362001899565b5050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620009fb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009a75790505b5050505050815250508152602001906001019062000939565b50505050905090565b60215460408051808201909152601c81527f696e7374616c6c20756e6971756520656e74697479206d6f64756c6500000000602082015262000a5f9062001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000aa59291909116906024810162002a47565b600060405180830381600087803b15801562000ac057600080fd5b505af115801562000ad5573d6000803e3d6000fd5b5050505062000ae362001f9f565b620008b16040518060600160405280602b815260200162017b24602b913962001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000b4d9291909116906024810162002a47565b600060405180830381600087803b15801562000b6857600080fd5b505af115801562000b7d573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562000c0757600080fd5b505af115801562000c1c573d6000803e3d6000fd5b5050601f546020546001600160a01b039182169350638da798da92501660005b6040519080825280601f01601f19166020018201604052801562000c67576020820181803683370190505b506040518363ffffffff1660e01b815260040162000c8792919062002a47565b600060405180830381600087803b15801562000ca257600080fd5b505af115801562000cb7573d6000803e3d6000fd5b50505050565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000a1457838290600052602060002001805462000d039062002ae0565b80601f016020809104026020016040519081016040528092919081815260200182805462000d319062002ae0565b801562000d825780601f1062000d565761010080835404028352916020019162000d82565b820191906000526020600020905b81548152906001019060200180831162000d6457829003601f168201915b50505050508152602001906001019062000ce1565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000ddd9291909116906024810162002a47565b600060405180830381600087803b15801562000df857600080fd5b505af115801562000e0d573d6000803e3d6000fd5b50505050600060405162000e219062002805565b604051809103906000f08015801562000e3e573d6000803e3d6000fd5b509050600062000eb07f73790000000000000000000000000000000000000000000000000000000000007f736f6d656e7300000000000000000000000000000000000000000000000000007f6563686f556e69717565456e746974790000000000000000000000000000000062001a4c565b601f546040517fb29e40890000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffff0000000000000000000000000000000083167f6e730000000000000000000000000000000000000000000000000000000000001760048201529192506001600160a01b03169063b29e408990602401600060405180830381600087803b15801562000f5257600080fd5b505af115801562000f67573d6000803e3d6000fd5b5050601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038681166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000fda57600080fd5b505af115801562000fef573d6000803e3d6000fd5b5050601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af08000000000000000000000000000000000000000000000000000000008152600095506001600160a01b039093169350633ae7af089262001096928792910162002b1c565b6000604051808303816000875af1158015620010b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010e0919081019062002bb4565b806020019051810190620010f5919062002c02565b601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af080000000000000000000000000000000000000000000000000000000081529394506000936001600160a01b0390931692633ae7af08926200119c92889290910162002b1c565b6000604051808303816000875af1158015620011bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011e6919081019062002bb4565b806020019051810190620011fb919062002c02565b601f5490915060009062001218906001600160a01b03166200182a565b90506200122c826200060b85600162002a81565b6200123e816200060b84600162002a81565b5050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200132b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012d75790505b5050505050815250508152602001906001019062001269565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e92620013a39291909116906024810162002a47565b600060405180830381600087803b158015620013be57600080fd5b505af1158015620013d3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200145d57600080fd5b505af115801562001472573d6000803e3d6000fd5b5050601f546020546001600160a01b03918216935063af068c9e925016600062000c3c565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000a14578382906000526020600020018054620014dd9062002ae0565b80601f01602080910402602001604051908101604052809291908181526020018280546200150b9062002ae0565b80156200155c5780601f1062001530576101008083540402835291602001916200155c565b820191906000526020600020905b8154815290600101906020018083116200153e57829003601f168201915b505050505081526020019060010190620014bb565b60008054610100900460ff1615620015925750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016b85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200163a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002c1c565b60408051601f1981840301815290829052620016569162002c66565b6000604051808303816000865af19150503d806000811462001695576040519150601f19603f3d011682016040523d82523d6000602084013e6200169a565b606091505b5091505080806020019051810190620016b4919062002c84565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b60006040516200172f9062002813565b604051809103906000f0801580156200174c573d6000803e3d6000fd5b506040516200175b9062002821565b604051809103906000f08015801562001778573d6000803e3d6000fd5b5060405162001787906200282f565b604051809103906000f080158015620017a4573d6000803e3d6000fd5b50604051620017b3906200283d565b604051809103906000f080158015620017d0573d6000803e3d6000fd5b50604051620017df906200284b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001824573d6000803e3d6000fd5b50905090565b6000816001600160a01b0316638459353e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200186d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001893919062002c02565b92915050565b604080516000808252602082019092526000620018d88483837e200100200000000000000000000000000000000000000000000000000000006200222f565b949350505050565b80821462000911577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200196e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a162000911620022f7565b600062001a5c6070601062002a81565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16176fffffffffffffffffffffffffffffffff19841690911c1790509392505050565b606081601081901b600062001adb836200243e565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161562001b3a5762001b347fffffffffffffffffffffffffffff000000000000000000000000000000000000841662002457565b62001b71565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff1983161562001b9c5762001b968362002457565b62001bd3565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200162001be79392919062002ca8565b6040516020818303038152906040529350505050919050565b60408051600080825260208201835281830184905282518083038401815260608301938490527f390baae00000000000000000000000000000000000000000000000000000000090935290916001600160a01b0386169163390baae09162001c919187918691907e200100200000000000000000000000000000000000000000000000000000006064840162002d77565b600060405180830381600087803b15801562001cac57600080fd5b505af115801562001cc1573d6000803e3d6000fd5b5050505050505050565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562001d6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d93919062002c84565b62001d9b5750565b601b805462001daa9062002ae0565b9050600014601b60405160200162001dc3919062002e5b565b6040516020818303038152906040529062001e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b60405180910390fd5b50601d8160405162001e29919062002c66565b9081526020016040518091039020546000148160405160200162001e4e919062002ee2565b6040516020818303038152906040529062001e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b50601b62001ea7828262002fa2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f0757600080fd5b505af115801562001f1c573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562001f8a57600080fd5b505af11580156200123e573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206d919062002c84565b620020755750565b600060a082601c546200208991906200306f565b6200209591906200306f565b620020a290600162002a81565b90506000811162002110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162001e0d565b80601d601b60405162002124919062003085565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002173601b8262003093565b5062002211601b8054620021879062002ae0565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b59062002ae0565b8015620022065780601f10620021da5761010080835404028352916020019162002206565b820191906000526020600020905b815481529060010190602001808311620021e857829003601f168201915b5050505050620024ed565b604080516020810190915260008152601b90620007a9908262002fa2565b6000806200223c620025f3565b9050306001600160a01b0382160362002266576200225d868686866200262e565b915050620018d8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990620022b390899089908990899060040162003175565b602060405180830381865afa158015620022d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200225d919062002c02565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620024105760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620023ab929160200162002c1c565b60408051601f1981840301815290829052620023c79162002c66565b6000604051808303816000865af19150503d806000811462002406576040519150601f19603f3d011682016040523d82523d6000602084013e6200240b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60006200244e6070601062002a81565b9190911b919050565b606060005b6010811015620024bc576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615620024bc5780620024b381620031a6565b9150506200245c565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280620018d8565b620025f07f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002535919062002c66565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1682526200257f9160040190815260200190565b600060405180830381865afa1580156200259d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025c7919081019062002bb4565b82604051602001620025db929190620031c3565b6040516020818303038152906040526200266a565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620016b8573391505090565b600062002661620026408686620026df565b60ff858116601b0360080285901c166200265b858762002737565b62002780565b95945050505050565b620025f08160405160240162002681919062002ac4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620027d6565b60008282604051602001620026f692919062003248565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562002778576200276160ff601b83900360080287901c168362002a81565b9150806200276f81620031a6565b9150506200273c565b509392505050565b600060208210620027aa57602082048401935060208281620027a657620027a662003285565b0691505b508254600882021b60208290038084111562002778576001850154600882021c82179150509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200329c83390190565b6111e480620087d683390190565b611a7980620099ba83390190565b6118cc806200b43383390190565b610b15806200ccff83390190565b61567c806200d81483390190565b614c6d8062012e9083390190565b6020808252825182820181905260009190848201906040850190845b818110156200289c5783516001600160a01b03168352928401929184019160010162002875565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620029525783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200290e565b50978a01979550505091870191600101620028d0565b50919998505050505050505050565b60005b83811015620029945781810151838201526020016200297a565b50506000910152565b60008151808452620029b781602086016020860162002977565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002a2457603f1988860301845262002a118583516200299d565b94509285019290850190600101620029f2565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0383168152604060208201526000620018d860408301846200299d565b634e487b7160e01b600052601160045260246000fd5b8082018082111562001893576200189362002a6b565b60408152600062002aac60408301856200299d565b90506001600160a01b03831660208301529392505050565b60208152600062002ad960208301846200299d565b9392505050565b600181811c9082168062002af557607f821691505b60208210810362002b1657634e487b7160e01b600052602260045260246000fd5b50919050565b828152604060208201526000620018d860408301846200299d565b600067ffffffffffffffff8084111562002b555762002b5562002a31565b604051601f8501601f19908116603f0116810190828211818310171562002b805762002b8062002a31565b8160405280935085815286868601111562002b9a57600080fd5b62002baa86602083018762002977565b5050509392505050565b60006020828403121562002bc757600080fd5b815167ffffffffffffffff81111562002bdf57600080fd5b8201601f8101841362002bf157600080fd5b620018d88482516020840162002b37565b60006020828403121562002c1557600080fd5b5051919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002c5881600485016020870162002977565b919091016004019392505050565b6000825162002c7a81846020870162002977565b9190910192915050565b60006020828403121562002c9757600080fd5b8151801515811462002ad957600080fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845162002d0b81600386016020890162002977565b80840190508160038201528451915062002d2d82600483016020880162002977565b0160040195945050505050565b600081518084526020808501945080840160005b8381101562002d6c5781518752958201959082019060010162002d4e565b509495945050505050565b85815260a06020820152600062002d9260a083018762002d3a565b60ff86166040840152828103606084015262002daf81866200299d565b9150508260808301529695505050505050565b6000815462002dd18162002ae0565b6001828116801562002dec576001811462002e205762002e51565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416875282151583028701945062002e51565b8560005260208060002060005b8581101562002e485781548a82015290840190820162002e2d565b50505082870194505b5050505092915050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600062002e8f600c83018462002dc2565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000825162002f1c81600c85016020870162002977565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620007a957600081815260208120601f850160051c8101602086101562002f795750805b601f850160051c820191505b8181101562002f9a5782815560010162002f85565b505050505050565b815167ffffffffffffffff81111562002fbf5762002fbf62002a31565b62002fd78162002fd0845462002ae0565b8462002f50565b602080601f8311600181146200300f576000841562002ff65750858301515b600019600386901b1c1916600185901b17855562002f9a565b600085815260208120601f198616915b8281101562003040578886015182559484019460019091019084016200301f565b50858210156200305f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111562001893576200189362002a6b565b600062002ad9828462002dc2565b8181036200309f575050565b620030ab825462002ae0565b67ffffffffffffffff811115620030c657620030c662002a31565b620030d78162002fd0845462002ae0565b6000601f8211600181146200310e5760008315620030f55750848201545b600019600385901b1c1916600184901b1784556200123e565b600085815260209020601f19841690600086815260209020845b838110156200314a578286015482556001958601959091019060200162003128565b50858310156200305f5793015460001960f8600387901b161c19169092555050600190811b01905550565b84815260806020820152600062003190608083018662002d3a565b60ff949094166040830152506060015292915050565b60006000198203620031bc57620031bc62002a6b565b5060010190565b7f474153205245504f52543a200000000000000000000000000000000000000000815260008351620031fd81600c85016020880162002977565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200323c81600d84016020880162002977565b01600d01949350505050565b82815260006020808301845182860160005b8281101562003278578151845292840192908401906001016200325a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b506111c4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c15780637826d14d146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610d46565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c610198565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896101a2565b905090565b60006101896101d4565b60006101896102d9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101d15750335b90565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f73797374656d000000000000000000000000000000000000000000000000000060308201526000916102c6910160405160208183030381529060405261026a90610d88565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f490923cd00000000000000000000000000000000000000000000000000000000179052610325565b8060200190518101906101899190610daf565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610320573391505090565b919050565b60606000610331610198565b905073ffffffffffffffffffffffffffffffffffffffff811630036103f457600061035b85610497565b50905073ffffffffffffffffffffffffffffffffffffffff81166103c05784610383866105c2565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103b7929190610e18565b60405180910390fd5b60006103da6103cd6101a2565b36601f19013584886106ff565b94509050806103ec576103ec84610780565b505050610179565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906104489087908790600401610e18565b6000604051808303816000875af1158015610467573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048f9190810190610ecf565b949350505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106104d1576104d1610f04565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061059d9061057790610d88565b857e15020014010000000000000000000000000000000000000000000000000000610788565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b606081601081901b60006105d583610872565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106305761062b7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610889565b610667565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561069d5761069883610889565b6106d4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016106e693929190610f1a565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610725848888610935565b6040516107329190610fa8565b600060405180830381855af49150503d806000811461076d576040519150601f19603f3d011682016040523d82523d6000602084013e610772565b606091505b509097909650945050505050565b805160208201fd5b60606000606060006107986102d9565b90503073ffffffffffffffffffffffffffffffffffffffff8216036107ce576107c2878787610965565b93509350935050610869565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd90610824908a908a908a90600401610fc4565b600060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c2919081019061101b565b93509350939050565b60006108806070601061109e565b9190911b919050565b606060005b60108110156108f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156108f857806108f0816110b1565b91505061088e565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000094909416602085015280516030909401905282525090565b606083838360405160200161094c939291906110cb565b60405160208183030381529060405290505b9392505050565b606060006060600061097685610a6d565b9050610983878783610a90565b9350600061099086610ad2565b90508015610a62576109a28888610b0f565b935066ffffffffffffff841667ffffffffffffffff8111156109c6576109c6610e31565b6040519080825280601f01601f1916602001820160405280156109f0576020820181803683370190505b5092506020830160005b828160ff161015610a5f576000610a128b8b84610b22565b90506000610a2f888460ff166028026038011c64ffffffffff1690565b9050610a3e8260008387610ba2565b610a48818561109e565b935050508080610a579061111d565b9150506109fa565b50505b505093509350939050565b60006008610a7d6002602061113c565b610a87919061114f565b9190911c919050565b606081600003610aaf575060408051602081019091526000815261095e565b6000610abb8585610c6f565b9050610ac981600085610cc5565b95945050505050565b60006008600180610ae56002602061113c565b610aef919061113c565b610af9919061113c565b610b03919061114f565b8260ff911c1692915050565b600061095e610b1e8484610cf0565b5490565b60008383604051602001610b37929190611166565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610c2b5760208310610bcc57602083048401935060208381610bc857610bc86111a1565b0692505b8215610c2b576020839003600081841015610bf05750600019600884021c19610bfb565b50600019600882021c195b8554600886021b811984511682821617845250818411610c1c575050610c69565b50600194909401939182900391015b5b60208210610c4d5783548152600190930192601f1990910190602001610c2c565b8115610c695780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610c84929190611166565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ce885858584610ba2565b509392505050565b60008282604051602001610d05929190611166565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610d5857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461095e57600080fd5b80516020808301519190811015610da9576000198160200360031b1b821691505b50919050565b600060208284031215610dc157600080fd5b5051919050565b60005b83811015610de3578181015183820152602001610dcb565b50506000910152565b60008151808452610e04816020860160208601610dc8565b601f01601f19169290920160200192915050565b82815260406020820152600061048f6040830184610dec565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610e5857600080fd5b815167ffffffffffffffff80821115610e7357610e73610e31565b604051601f8301601f19908116603f01168101908282118183101715610e9b57610e9b610e31565b81604052838152866020858801011115610eb457600080fd5b610ec5846020830160208901610dc8565b9695505050505050565b600060208284031215610ee157600080fd5b815167ffffffffffffffff811115610ef857600080fd5b61048f84828501610e47565b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451610f7b816003860160208901610dc8565b808401905081600382015284519150610f9b826004830160208801610dc8565b0160040195945050505050565b60008251610fba818460208701610dc8565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561100557845183529383019391830191600101610fe9565b5050809350505050826040830152949350505050565b60008060006060848603121561103057600080fd5b835167ffffffffffffffff8082111561104857600080fd5b61105487838801610e47565b945060208601519350604086015191508082111561107157600080fd5b5061107e86828701610e47565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082018082111561017957610179611088565b600060001982036110c4576110c4611088565b5060010190565b600084516110dd818460208901610dc8565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff810361113357611133611088565b60010192915050565b8181038181111561017957610179611088565b808202811582820484141761017957610179611088565b82815260006020808301845182860160005b8281101561119457815184529284019290840190600101611178565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a676574206120756e6971756520656e74697479206e6f6e63652028726f6f74206d6f64756c6529676574206120756e6971756520656e74697479206e6f6e636520286e6f6e2d726f6f74206d6f64756c6529a164736f6c6343000815000a60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b61121b8062002d5283390190565b608051612cd1620000816000396000818161040701526107880152612cd16000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100df57806345ec9354146100fc5780637c5b03351461010f578063e1af802c1461012257600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100ca575b600080fd5b61009561009036600461275a565b61012a565b60405190151581526020015b60405180910390f35b6100b261020f565b6040516001600160a01b0390911681526020016100a1565b6100dd6100d836600461278d565b61021e565b005b6040516b756e69717565456e7469747960a01b81526020016100a1565b604051601f1936013581526020016100a1565b6100dd61011d36600461278d565b610560565b6100b261099f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101bd57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061020957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006102196109a9565b905090565b6102386b756e69717565456e7469747960a01b5b826109db565b600061024261099f565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201526b756e69717565456e7469747960a01b60228201529091506001600160a01b0382169063b29e4089906030016040516020818303038152906040526102af9061283e565b6040518263ffffffff1660e01b81526004016102cd91815260200190565b600060405180830381600087803b1580156102e757600080fd5b505af11580156102fb573d6000803e3d6000fd5b505060408051613a3160f11b60208201526b756e69717565456e7469747960a01b60228201527f7461626c65000000000000000000000000000000000000000000000000000000603082015261036c93500190506040516020818303038152906040526103679061283e565b610a20565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b03831691633350b6a991016040516020818303038152906040526103c99061283e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b50506040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b03851693506326d981029250016040516020818303038152906040526104c59061283e565b6040518263ffffffff1660e01b81526004016105189181526040602082018190526011908201527f676574556e69717565456e746974792829000000000000000000000000000000606082015260800190565b6020604051808303816000875af1158015610537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055b9190612862565b505050565b6105786b756e69717565456e7469747960a01b610232565b600061058261099f565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201526b756e69717565456e7469747960a01b602282015290915060009081906001600160a01b03841690819063b29e4089906030016040516020818303038152906040526105f69061283e565b60405160240161060891815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161065592506128a3565b600060405180830381855af49150503d8060008114610690576040519150601f19603f3d011682016040523d82523d6000602084013e610695565b606091505b5091509150816106a8576106a881610a6c565b60408051613a3160f11b60208201526b756e69717565456e7469747960a01b60228201527f7461626c650000000000000000000000000000000000000000000000000000006030820152610714910160405160208183030381529060405261070f9061283e565b610a74565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b038516918291633350b6a991016040516020818303038152906040526107739061283e565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161080492506128a3565b600060405180830381855af49150503d806000811461083f576040519150601f19603f3d011682016040523d82523d6000602084013e610844565b606091505b509092509050816108585761085881610a6c565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b0385169182916326d9810291016040516020818303038152906040526108b79061283e565b6040805160248101929092526044820152601160648201527f676574556e69717565456e746974792829000000000000000000000000000000608482015260a40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161094592506128a3565b600060405180830381855af49150503d8060008114610980576040519150601f19603f3d011682016040523d82523d6000602084013e610985565b606091505b509092509050816109995761099981610a6c565b50505050565b6000610219610abd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806109d85750335b90565b6109e58282610afc565b15610a1c576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610a69817e20010020000000000000000000000000000000000000000000000000000000610a4c610b2b565b610a54610b4a565b610a5c610bbc565b610a64610bef565b610c74565b50565b805160208201fd5b610a69817e20010020000000000000000000000000000000000000000000000000000000610aa0610b2b565b610aa8610b4a565b610ab0610bbc565b610ab8610bef565b610d2e565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610af7573391505090565b919050565b6000806001600160a01b0316610b1984848051906020012061102a565b6001600160a01b031614159392505050565b60408051600080825260208201909252610b4481611151565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610b8457610b846128bf565b602002602001019060c5811115610b9d57610b9d6128d5565b908160c5811115610bb057610bb06128d5565b905250610b4481611151565b60408051600080825260208201909252606091610be9565b6060815260200190600190039081610bd45790505b50905090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610c065790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110610c6657610c666128bf565b602002602001018190525090565b6000610c7e610abd565b9050306001600160a01b03821603610ca357610c9e878787878787610d2e565b610d25565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990610cf2908a908a908a908a908a908a9060040161296c565b600060405180830381600087803b158015610d0c57600080fd5b505af1158015610d20573d6000803e3d6000fd5b505050505b50505050505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610da757507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610e1157613a3160f11b8687604051602001610dc691815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610e089392916004016129b6565b60405180910390fd5b610e1a8561130c565b610e25846001611494565b610e30836000611494565b60e084901c60e885901c0160ff16825114610e905760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610e08565b60e085901c60e886901c0160ff16815114610ef05760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610e08565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610f685760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610e08565b610f718661163b565b15610fcb578586604051602001610f8a91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610e0892916004016129f7565b6110178686868686604051602001610fe39190612a10565b604051602081830303815290604052866040516020016110039190612a10565b60405160208183030381529060405261171f565b61102286600161183f565b505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611076576110766128bf565b6020026020010181815250508281600181518110611096576110966128bf565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015281518082039093018352810190526000906111459061111d9061283e565b8360007e14010014000000000000000000000000000000000000000000000000000000611931565b60601c95945050505050565b6000601c8251111561117b578151604051635318beb960e01b8152600401610e0891815260200190565b60008080805b85518110156112565760006111bf8783815181106111a1576111a16128bf565b602002602001015160c58111156111ba576111ba6128d5565b6119ee565b9050806000036111d45760019092019161120c565b821561120c576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061122d5761122d6128bf565b602002602001015160c5811115611246576112466128d5565b901b949094179350600101611181565b50600581111561127c57604051635318beb960e01b815260048101829052602401610e08565b8451819003600861128f60026020612a39565b6112999190612a4c565b83901b9390931792600860016112b160026020612a39565b6112bb9190612a39565b6112c59190612a4c565b81901b939093179260086001806112de60026020612a39565b6112e89190612a39565b6112f29190612a39565b6112fc9190612a4c565b9190911b92909217949350505050565b80611343576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061134e82611a4e565b90506005811115611395576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610e08565b60006113a083611a8b565b905060006113ae8383612a63565b9050601c8111156113f5576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610e08565b60005b8281101561148d5760ff601b82900360080286901c166000819003611449576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115611484576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016113f8565b5050505050565b801580156114a0575081155b156114c157604051635318beb960e01b815260006004820152602401610e08565b60006114cc83611a4e565b905060058111156114f357604051635318beb960e01b815260048101829052602401610e08565b60006114fe84611a8b565b9050600061150c8383612a63565b9050601c81111561153357604051635318beb960e01b815260048101829052602401610e08565b60008060005b838110156115f45760006115616115508a84611a9d565b60c58111156111ba576111ba6128d5565b11156115ab578481106115a0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916115ec565b848110156115e5576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101611539565b5083821461161857604051635318beb960e01b815260048101839052602401610e08565b848114610d2557604051635318beb960e01b815260048101829052602401610e08565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611674576116746128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905260009061170b906116e39061283e565b8360007e01010001000000000000000000000000000000000000000000000000000000611ac5565b90506117178160f81c90565b949350505050565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006117568484611afb565b905060006117648585611b18565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061179e5761179e6128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526118339061180a9061283e565b828686867e60030220202000000000000000000000000000000000000000000000000000611b44565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611875576118756128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905261055b906118e19061283e565b826000856040516020016118fc91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611e91565b60008061193c610abd565b9050306001600160a01b038216036119625761195a86868686611ac5565b915050611717565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906119ad908990899089908990600401612ab1565b602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195a9190612ae0565b6000808260c5811115611a0357611a036128d5565b60ff1690506061811015611a1d57601f1660010192915050565b60618360c5811115611a3157611a316128d5565b03611a3f5750601492915050565b50600092915050565b50919050565b60006008600180611a6160026020612a39565b611a6b9190612a39565b611a759190612a39565b611a7f9190612a4c565b8260ff911c1692915050565b600060086001611a6b60026020612a39565b6000601b8290036008028360ff911c1660c5811115611abe57611abe6128d5565b9392505050565b6000611af2611ad48686611ea6565b60ff858116601b0360080285901c16611aed8587611efc565b611f3f565b95945050505050565b8151815160009181810160389190911b1760609190911b17611abe565b60608282604051602001611b2d929190612af9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611bd057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611bc39493929190612b28565b60405180910390a2611022565b6000611bdb87611f90565b905060005b8151811015611cbe576000828281518110611bfd57611bfd6128bf565b60200260200101519050611c296001826affffffffffffffffffffff191661205890919063ffffffff16565b15611cab576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611c78908c908c908c908c908c908c90600401612b72565b600060405180830381600087803b158015611c9257600080fd5b505af1158015611ca6573d6000803e3d6000fd5b505050505b5080611cb681612bcb565b915050611be0565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611cf59493929190612b28565b60405180910390a26000611d098888611ea6565b90506000602087019050611d21826000895184612076565b6000611d2c85611a4e565b1115611db0576000611d3e8a8a612136565b878155905060208601915060008060005b611d5888611a4e565b8160ff161015611dab57611d6d8d8d8361218c565b9250611d888a8260ff166028026038011c64ffffffffff1690565b9150611d978360008488612076565b611da18286612a63565b9450600101611d4f565b505050505b60005b8351811015611833576000848281518110611dd057611dd06128bf565b60200260200101519050611dfc6002826affffffffffffffffffffff191661205890919063ffffffff16565b15611e7e576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611e4b908e908e908e908e908e908e90600401612b72565b600060405180830381600087803b158015611e6557600080fd5b505af1158015611e79573d6000803e3d6000fd5b505050505b5080611e8981612bcb565b915050611db3565b61148d8585611ea08487611efc565b8561220c565b60008282604051602001611ebb929190612be5565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611f3757611f2360ff601b83900360080287901c1683612a63565b915080611f2f81612bcb565b915050611f01565b509392505050565b600060208210611f6557602082048401935060208281611f6157611f61612c13565b0691505b508254600882021b602082900380841115611f37576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611fca57611fca6128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090612041906120399061283e565b8360006124bb565b905061171761205382600084516124f5565b612585565b60008160ff16826120698560581c90565b1660ff1614905092915050565b82156120f057602083106120a05760208304840193506020838161209c5761209c612c13565b0692505b82156120f05760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116120e1575050610999565b50600194909401939182900391015b5b602082106121125780518455600190930192601f19909101906020016120f1565b8115610999576000600019600884021c198554835182169119161785555050505050565b6000828260405160200161214b929190612be5565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016121a1929190612be5565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361229657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161228993929190612c29565b60405180910390a2610999565b60006122a28585611ea6565b905060006122af86611f90565b905060005b815181101561238e5760008282815181106122d1576122d16128bf565b602002602001015190506122fd6004826affffffffffffffffffffff191661205890919063ffffffff16565b1561237b576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612348908b908b908b908b90600401612c66565b600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b505050505b508061238681612bcb565b9150506122b4565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516123c393929190612c29565b60405180910390a26123de828565ffffffffffff1685612596565b60005b8151811015610d255760008282815181106123fe576123fe6128bf565b6020026020010151905061242a6008826affffffffffffffffffffff191661205890919063ffffffff16565b156124a8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612475908b908b908b908b90600401612c66565b600060405180830381600087803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b505050505b50806124b381612bcb565b9150506123e1565b60606117176124cb85858561218c565b60006124f0856124db89896125ac565b9060ff166028026038011c64ffffffffff1690565b6125bf565b6000818311158015612508575083518211155b612544578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610e0893929190612c9f565b602084016125528482612a63565b905060006125608585612a39565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611abe83601560006125e2565b61055b838383516125a78560200190565b612076565b6000611abe6125bb8484612136565b5490565b60405160208101601f19603f8484010116604052828252611f378585858461265d565b606060006125f08560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161261657612616612c13565b04905060405193506020840160208202810160405281855260005b82811015612651578451871c825293870193602090910190600101612631565b50505050509392505050565b82156126e657602083106126875760208304840193506020838161268357612683612c13565b0692505b82156126e65760208390036000818410156126ab5750600019600884021c196126b6565b50600019600882021c195b8554600886021b8119845116828216178452508184116126d7575050610999565b50600194909401939182900391015b5b602082106127085783548152600190930192601f19909101906020016126e7565b8115610999576000600019600884021c198251865482169119161782525050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a6957600080fd5b60006020828403121561276c57600080fd5b8135611abe8161272c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561279f57600080fd5b813567ffffffffffffffff808211156127b757600080fd5b818401915084601f8301126127cb57600080fd5b8135818111156127dd576127dd612777565b604051601f8201601f19908116603f0116810190838211818310171561280557612805612777565b8160405282815287602084870101111561281e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015611a485760001960209190910360031b1b16919050565b60006020828403121561287457600080fd5b8151611abe8161272c565b60005b8381101561289a578181015183820152602001612882565b50506000910152565b600082516128b581846020870161287f565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845261290381602086016020860161287f565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561295f57828403895261294d8483516128eb565b98850198935090840190600101612935565b5091979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061299760c0830185612917565b82810360a08401526129a98185612917565b9998505050505050505050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611af260608301846128eb565b82815260406020820152600061171760408301846128eb565b602081526000611abe6020830184612917565b634e487b7160e01b600052601160045260246000fd5b8181038181111561020957610209612a23565b808202811582820484141761020957610209612a23565b8082018082111561020957610209612a23565b600081518084526020808501945080840160005b83811015612aa657815187529582019590820190600101612a8a565b509495945050505050565b848152608060208201526000612aca6080830186612a76565b60ff949094166040830152506060015292915050565b600060208284031215612af257600080fd5b5051919050565b60008351612b0b81846020880161287f565b835190830190612b1f81836020880161287f565b01949350505050565b608081526000612b3b6080830187612a76565b8281036020840152612b4d81876128eb565b90508460408401528281036060840152612b6781856128eb565b979650505050505050565b86815260c060208201526000612b8b60c0830188612a76565b8281036040840152612b9d81886128eb565b90508560608401528281036080840152612bb781866128eb565b9150508260a0830152979650505050505050565b60006000198203612bde57612bde612a23565b5060010190565b82815260006020808301845182860160005b8281101561295f57815184529284019290840190600101612bf7565b634e487b7160e01b600052601260045260246000fd5b606081526000612c3c6060830186612a76565b65ffffffffffff851660208401528281036040840152612c5c81856128eb565b9695505050505050565b848152608060208201526000612c7f6080830186612a76565b65ffffffffffff851660408401528281036060840152612b6781856128eb565b606081526000612cb260608301866128eb565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506111fb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063490923cd146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610ec7565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c6102d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896102e1565b905090565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f7461626c650000000000000000000000000000000000000000000000000000006030820152600091829161022b910160405160208183030381529060405261022690610f09565b610313565b610236906001610f5f565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f7461626c6500000000000000000000000000000000000000000000000000000060308201529192506102d291016040516020818303038152906040526102cc90610f09565b82610358565b919050565b60006101896103b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103105750335b90565b6040805160008082526020820190925260006103508483837e200100200000000000000000000000000000000000000000000000000000006103fb565b949350505050565b604080516000808252602082018352918101839052906103af90849083906060820160408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006104d2565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806102d2573391505090565b6000806104066103b4565b90503073ffffffffffffffffffffffffffffffffffffffff82160361043957610431868686866105a2565b915050610350565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990610491908990899089908990600401610fad565b602060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104319190610fdc565b60006104dc6103b4565b90503073ffffffffffffffffffffffffffffffffffffffff82160361050d5761050886868686866105d8565b61059a565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae090610567908990899089908990899060040161103b565b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b505050505b505050505050565b60006105cf6105b186866105f4565b60ff858116601b0360080285901c166105ca858761064a565b61068d565b95945050505050565b6105ed85856105e7848761064a565b856106de565b5050505050565b60008282604051602001610609929190611082565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156106855761067160ff601b83900360080287901c1683610f5f565b91508061067d816110bd565b91505061064f565b509392505050565b6000602082106106b3576020820484019350602082816106af576106af6110d7565b0691505b508254600882021b602082900380841115610685576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361076857837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161075b93929190611106565b60405180910390a2610991565b600061077485856105f4565b9050600061078186610997565b905060005b81518110156108605760008282815181106107a3576107a3611143565b602002602001015190506107cf6004826affffffffffffffffffffff1916610a9290919063ffffffff16565b1561084d576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061081a908b908b908b908b90600401611172565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b5080610858816110bd565b915050610786565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161089593929190611106565b60405180910390a26108b0828565ffffffffffff1685610ab0565b60005b815181101561098d5760008282815181106108d0576108d0611143565b602002602001015190506108fc6008826affffffffffffffffffffff1916610a9290919063ffffffff16565b1561097a576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610947908b908b908b908b90600401611172565b600060405180830381600087803b15801561096157600080fd5b505af1158015610975573d6000803e3d6000fd5b505050505b5080610985816110bd565b9150506108b3565b5050505b50505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106109d1576109d1611143565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610a7b90610a7390610f09565b836000610ac6565b9050610350610a8d8260008451610b00565b610b99565b60008160ff1682610aa38560581c90565b1660ff1614905092915050565b6103af83838351610ac18560200190565b610bb1565b6060610350610ad6858585610c71565b6000610afb85610ae68989610cf1565b9060ff166028026038011c64ffffffffff1690565b610d04565b6000818311158015610b13575083518211155b610b58578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b4f939291906111b6565b60405180910390fd5b60208401610b668482610f5f565b90506000610b7485856111db565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610baa8360156000610d27565b9392505050565b8215610c2b5760208310610bdb57602083048401935060208381610bd757610bd76110d7565b0692505b8215610c2b5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c1c575050610991565b50600194909401939182900391015b5b60208210610c4d5780518455600190930192601f1990910190602001610c2c565b8115610991576000600019600884021c198554835182169119161785555050505050565b60008383604051602001610c86929190611082565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610baa610d008484610da2565b5490565b60405160208101601f19603f848401011660405282825261068585858584610df8565b60606000610d358560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d5b57610d5b6110d7565b04905060405193506020840160208202810160405281855260005b82811015610d96578451871c825293870193602090910190600101610d76565b50505050509392505050565b60008282604051602001610db7929190611082565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610e815760208310610e2257602083048401935060208381610e1e57610e1e6110d7565b0692505b8215610e81576020839003600081841015610e465750600019600884021c19610e51565b50600019600882021c195b8554600886021b811984511682821617845250818411610e72575050610991565b50600194909401939182900391015b5b60208210610ea35783548152600190930192601f1990910190602001610e82565b8115610991576000600019600884021c198251865482169119161782525050505050565b600060208284031215610ed957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610baa57600080fd5b80516020808301519190811015610f2a576000198160200360031b1b821691505b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561017957610179610f30565b600081518084526020808501945080840160005b83811015610fa257815187529582019590820190600101610f86565b509495945050505050565b848152608060208201526000610fc66080830186610f72565b60ff949094166040830152506060015292915050565b600060208284031215610fee57600080fd5b5051919050565b6000815180845260005b8181101561101b57602081850181015186830182015201610fff565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061105460a0830187610f72565b60ff86166040840152828103606084015261106f8186610ff5565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156110b057815184529284019290840190600101611094565b5091979650505050505050565b600060001982036110d0576110d0610f30565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006111196060830186610f72565b65ffffffffffff8516602084015282810360408401526111398185610ff5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b84815260806020820152600061118b6080830186610f72565b65ffffffffffff8516604084015282810360608401526111ab8185610ff5565b979650505050505050565b6060815260006111c96060830186610ff5565b60208301949094525060400152919050565b8181038181111561017957610179610f3056fea164736f6c6343000815000a","sourceMap":"1477:4359:201:-:0;;;1572:26:101;;;1594:4;-1:-1:-1;;1572:26:101;;;;;;;;3126:44:104;;;;;;;;;;;228:9:0;186:51;;1643:24:201;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1603:64:201;;;-1:-1:-1;;;;;;1603:64:201;-1:-1:-1;;;;;1603:64:201;;;;;;;;;;1693:93;-1:-1:-1;;;;;;;;;1693:25:201;:93::i;:::-;1671:115;;1477:4359;;;;;;;;;;;;941:257:59;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;-1:-1:-1;;;;;;1084:15:59;;-1:-1:-1;;;;;;;336:5:16;1103:31:59;;;;1084:51;-1:-1:-1;;;;;;1139:13:59;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;1477:4359:201:-;;;;;;;;:::o;14:222:203:-;79:9;;;100:10;;;97:133;;;152:10;147:3;143:20;140:1;133:31;187:4;184:1;177:15;215:4;212:1;205:15;97:133;14:222;;;;:::o;:::-;1477:4359:201;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001325760003560e01c806378cdebf911620000c0578063974884d5116200008b578063ba414fa6116200006e578063ba414fa614620001fb578063e20c9f711462000216578063fa7626d4146200022057600080fd5b8063974884d514620001e7578063b5508aa914620001f157600080fd5b806378cdebf914620001b057806385226c8114620001ba5780638a5fc88814620001d3578063916a17c614620001dd57600080fd5b80634f95666211620001015780634f95666214620001795780635ecdf433146200018357806366d9a9a0146200018d578063786bd7bc14620001a657600080fd5b80630a9254e414620001375780631ed7831c14620001435780633e5e3c2314620001655780633f7286f4146200016f575b600080fd5b620001416200022e565b005b6200014d62000375565b6040516200015c919062002859565b60405180910390f35b6200014d620003d9565b6200014d6200043b565b620001416200049d565b62000141620007ae565b6200019762000915565b6040516200015c9190620028a8565b6200014162000a1d565b6200014162000b07565b620001c462000cbd565b6040516200015c9190620029cb565b6200014162000d97565b6200019762001245565b6200014162001344565b620001c462001497565b6200020562001571565b60405190151581526020016200015c565b6200014d620016bd565b600054620002059060ff1681565b6040516200023c90620027f7565b604051809103906000f08015801562000259573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de8620002a06200171f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002fa57600080fd5b505af11580156200030f573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550620003739050565b565b6060600d805480602002602001604051908101604052809291908181526020018280548015620003cf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620003b0575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b602154601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da92620004e69291909116906024810162002a47565b600060405180830381600087803b1580156200050157600080fd5b505af115801562000516573d6000803e3d6000fd5b50506040517f06447d56000000000000000000000000000000000000000000000000000000008152739c0257114eb9399a2985f8e75dad7600c5d89fe3600482018190529250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d5690602401600060405180830381600087803b1580156200059757600080fd5b505af1158015620005ac573d6000803e3d6000fd5b5050601f5460009250620005ca91506001600160a01b03166200182a565b9050620005e2620005db8462001899565b82620018e0565b601f546200061190620005fe906001600160a01b03166200182a565b6200060b83600162002a81565b620018e0565b62000620620005fe8462001899565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fd787b73700000000000000000000000000000000000000000000000000000000620006d2620006cc7f74620000000000000000000000000000000000000000000000000000000000007f756e69717565456e7469747900000000000000000000000000000000000000007f7461626c6500000000000000000000000000000000000000000000000000000062001a4c565b62001ac6565b85604051602401620006e692919062002a97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200075a9160040162002ac4565b600060405180830381600087803b1580156200077557600080fd5b505af11580156200078a573d6000803e3d6000fd5b5050601f54620007a992506001600160a01b0316905084607b62001c00565b505050565b6021546040805180820190915260208082527f696e7374616c6c526f6f7420756e6971756520656e74697479206d6f64756c6590820152620007f09062001ccb565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e926200084f9291909116906024810162002a47565b600060405180830381600087803b1580156200086a57600080fd5b505af11580156200087f573d6000803e3d6000fd5b505050506200088d62001f9f565b620008b160405180606001604052806027815260200162017afd6027913962001ccb565b601f54600090620008cb906001600160a01b03166200182a565b9050620008d762001f9f565b620008e6620005db8362001899565b601f546200090290620005fe906001600160a01b03166200182a565b62000911620005fe8362001899565b5050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620009fb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009a75790505b5050505050815250508152602001906001019062000939565b50505050905090565b60215460408051808201909152601c81527f696e7374616c6c20756e6971756520656e74697479206d6f64756c6500000000602082015262000a5f9062001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000aa59291909116906024810162002a47565b600060405180830381600087803b15801562000ac057600080fd5b505af115801562000ad5573d6000803e3d6000fd5b5050505062000ae362001f9f565b620008b16040518060600160405280602b815260200162017b24602b913962001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000b4d9291909116906024810162002a47565b600060405180830381600087803b15801562000b6857600080fd5b505af115801562000b7d573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562000c0757600080fd5b505af115801562000c1c573d6000803e3d6000fd5b5050601f546020546001600160a01b039182169350638da798da92501660005b6040519080825280601f01601f19166020018201604052801562000c67576020820181803683370190505b506040518363ffffffff1660e01b815260040162000c8792919062002a47565b600060405180830381600087803b15801562000ca257600080fd5b505af115801562000cb7573d6000803e3d6000fd5b50505050565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000a1457838290600052602060002001805462000d039062002ae0565b80601f016020809104026020016040519081016040528092919081815260200182805462000d319062002ae0565b801562000d825780601f1062000d565761010080835404028352916020019162000d82565b820191906000526020600020905b81548152906001019060200180831162000d6457829003601f168201915b50505050508152602001906001019062000ce1565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000ddd9291909116906024810162002a47565b600060405180830381600087803b15801562000df857600080fd5b505af115801562000e0d573d6000803e3d6000fd5b50505050600060405162000e219062002805565b604051809103906000f08015801562000e3e573d6000803e3d6000fd5b509050600062000eb07f73790000000000000000000000000000000000000000000000000000000000007f736f6d656e7300000000000000000000000000000000000000000000000000007f6563686f556e69717565456e746974790000000000000000000000000000000062001a4c565b601f546040517fb29e40890000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffff0000000000000000000000000000000083167f6e730000000000000000000000000000000000000000000000000000000000001760048201529192506001600160a01b03169063b29e408990602401600060405180830381600087803b15801562000f5257600080fd5b505af115801562000f67573d6000803e3d6000fd5b5050601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038681166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000fda57600080fd5b505af115801562000fef573d6000803e3d6000fd5b5050601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af08000000000000000000000000000000000000000000000000000000008152600095506001600160a01b039093169350633ae7af089262001096928792910162002b1c565b6000604051808303816000875af1158015620010b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010e0919081019062002bb4565b806020019051810190620010f5919062002c02565b601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af080000000000000000000000000000000000000000000000000000000081529394506000936001600160a01b0390931692633ae7af08926200119c92889290910162002b1c565b6000604051808303816000875af1158015620011bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011e6919081019062002bb4565b806020019051810190620011fb919062002c02565b601f5490915060009062001218906001600160a01b03166200182a565b90506200122c826200060b85600162002a81565b6200123e816200060b84600162002a81565b5050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200132b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012d75790505b5050505050815250508152602001906001019062001269565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e92620013a39291909116906024810162002a47565b600060405180830381600087803b158015620013be57600080fd5b505af1158015620013d3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200145d57600080fd5b505af115801562001472573d6000803e3d6000fd5b5050601f546020546001600160a01b03918216935063af068c9e925016600062000c3c565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000a14578382906000526020600020018054620014dd9062002ae0565b80601f01602080910402602001604051908101604052809291908181526020018280546200150b9062002ae0565b80156200155c5780601f1062001530576101008083540402835291602001916200155c565b820191906000526020600020905b8154815290600101906020018083116200153e57829003601f168201915b505050505081526020019060010190620014bb565b60008054610100900460ff1615620015925750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016b85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200163a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002c1c565b60408051601f1981840301815290829052620016569162002c66565b6000604051808303816000865af19150503d806000811462001695576040519150601f19603f3d011682016040523d82523d6000602084013e6200169a565b606091505b5091505080806020019051810190620016b4919062002c84565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b60006040516200172f9062002813565b604051809103906000f0801580156200174c573d6000803e3d6000fd5b506040516200175b9062002821565b604051809103906000f08015801562001778573d6000803e3d6000fd5b5060405162001787906200282f565b604051809103906000f080158015620017a4573d6000803e3d6000fd5b50604051620017b3906200283d565b604051809103906000f080158015620017d0573d6000803e3d6000fd5b50604051620017df906200284b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001824573d6000803e3d6000fd5b50905090565b6000816001600160a01b0316638459353e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200186d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001893919062002c02565b92915050565b604080516000808252602082019092526000620018d88483837e200100200000000000000000000000000000000000000000000000000000006200222f565b949350505050565b80821462000911577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200196e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a162000911620022f7565b600062001a5c6070601062002a81565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16176fffffffffffffffffffffffffffffffff19841690911c1790509392505050565b606081601081901b600062001adb836200243e565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161562001b3a5762001b347fffffffffffffffffffffffffffff000000000000000000000000000000000000841662002457565b62001b71565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff1983161562001b9c5762001b968362002457565b62001bd3565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200162001be79392919062002ca8565b6040516020818303038152906040529350505050919050565b60408051600080825260208201835281830184905282518083038401815260608301938490527f390baae00000000000000000000000000000000000000000000000000000000090935290916001600160a01b0386169163390baae09162001c919187918691907e200100200000000000000000000000000000000000000000000000000000006064840162002d77565b600060405180830381600087803b15801562001cac57600080fd5b505af115801562001cc1573d6000803e3d6000fd5b5050505050505050565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562001d6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d93919062002c84565b62001d9b5750565b601b805462001daa9062002ae0565b9050600014601b60405160200162001dc3919062002e5b565b6040516020818303038152906040529062001e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b60405180910390fd5b50601d8160405162001e29919062002c66565b9081526020016040518091039020546000148160405160200162001e4e919062002ee2565b6040516020818303038152906040529062001e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b50601b62001ea7828262002fa2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f0757600080fd5b505af115801562001f1c573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562001f8a57600080fd5b505af11580156200123e573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206d919062002c84565b620020755750565b600060a082601c546200208991906200306f565b6200209591906200306f565b620020a290600162002a81565b90506000811162002110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162001e0d565b80601d601b60405162002124919062003085565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002173601b8262003093565b5062002211601b8054620021879062002ae0565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b59062002ae0565b8015620022065780601f10620021da5761010080835404028352916020019162002206565b820191906000526020600020905b815481529060010190602001808311620021e857829003601f168201915b5050505050620024ed565b604080516020810190915260008152601b90620007a9908262002fa2565b6000806200223c620025f3565b9050306001600160a01b0382160362002266576200225d868686866200262e565b915050620018d8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990620022b390899089908990899060040162003175565b602060405180830381865afa158015620022d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200225d919062002c02565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620024105760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620023ab929160200162002c1c565b60408051601f1981840301815290829052620023c79162002c66565b6000604051808303816000865af19150503d806000811462002406576040519150601f19603f3d011682016040523d82523d6000602084013e6200240b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60006200244e6070601062002a81565b9190911b919050565b606060005b6010811015620024bc576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615620024bc5780620024b381620031a6565b9150506200245c565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280620018d8565b620025f07f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002535919062002c66565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1682526200257f9160040190815260200190565b600060405180830381865afa1580156200259d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025c7919081019062002bb4565b82604051602001620025db929190620031c3565b6040516020818303038152906040526200266a565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620016b8573391505090565b600062002661620026408686620026df565b60ff858116601b0360080285901c166200265b858762002737565b62002780565b95945050505050565b620025f08160405160240162002681919062002ac4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620027d6565b60008282604051602001620026f692919062003248565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562002778576200276160ff601b83900360080287901c168362002a81565b9150806200276f81620031a6565b9150506200273c565b509392505050565b600060208210620027aa57602082048401935060208281620027a657620027a662003285565b0691505b508254600882021b60208290038084111562002778576001850154600882021c82179150509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200329c83390190565b6111e480620087d683390190565b611a7980620099ba83390190565b6118cc806200b43383390190565b610b15806200ccff83390190565b61567c806200d81483390190565b614c6d8062012e9083390190565b6020808252825182820181905260009190848201906040850190845b818110156200289c5783516001600160a01b03168352928401929184019160010162002875565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620029525783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200290e565b50978a01979550505091870191600101620028d0565b50919998505050505050505050565b60005b83811015620029945781810151838201526020016200297a565b50506000910152565b60008151808452620029b781602086016020860162002977565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002a2457603f1988860301845262002a118583516200299d565b94509285019290850190600101620029f2565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0383168152604060208201526000620018d860408301846200299d565b634e487b7160e01b600052601160045260246000fd5b8082018082111562001893576200189362002a6b565b60408152600062002aac60408301856200299d565b90506001600160a01b03831660208301529392505050565b60208152600062002ad960208301846200299d565b9392505050565b600181811c9082168062002af557607f821691505b60208210810362002b1657634e487b7160e01b600052602260045260246000fd5b50919050565b828152604060208201526000620018d860408301846200299d565b600067ffffffffffffffff8084111562002b555762002b5562002a31565b604051601f8501601f19908116603f0116810190828211818310171562002b805762002b8062002a31565b8160405280935085815286868601111562002b9a57600080fd5b62002baa86602083018762002977565b5050509392505050565b60006020828403121562002bc757600080fd5b815167ffffffffffffffff81111562002bdf57600080fd5b8201601f8101841362002bf157600080fd5b620018d88482516020840162002b37565b60006020828403121562002c1557600080fd5b5051919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002c5881600485016020870162002977565b919091016004019392505050565b6000825162002c7a81846020870162002977565b9190910192915050565b60006020828403121562002c9757600080fd5b8151801515811462002ad957600080fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845162002d0b81600386016020890162002977565b80840190508160038201528451915062002d2d82600483016020880162002977565b0160040195945050505050565b600081518084526020808501945080840160005b8381101562002d6c5781518752958201959082019060010162002d4e565b509495945050505050565b85815260a06020820152600062002d9260a083018762002d3a565b60ff86166040840152828103606084015262002daf81866200299d565b9150508260808301529695505050505050565b6000815462002dd18162002ae0565b6001828116801562002dec576001811462002e205762002e51565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416875282151583028701945062002e51565b8560005260208060002060005b8581101562002e485781548a82015290840190820162002e2d565b50505082870194505b5050505092915050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600062002e8f600c83018462002dc2565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000825162002f1c81600c85016020870162002977565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620007a957600081815260208120601f850160051c8101602086101562002f795750805b601f850160051c820191505b8181101562002f9a5782815560010162002f85565b505050505050565b815167ffffffffffffffff81111562002fbf5762002fbf62002a31565b62002fd78162002fd0845462002ae0565b8462002f50565b602080601f8311600181146200300f576000841562002ff65750858301515b600019600386901b1c1916600185901b17855562002f9a565b600085815260208120601f198616915b8281101562003040578886015182559484019460019091019084016200301f565b50858210156200305f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111562001893576200189362002a6b565b600062002ad9828462002dc2565b8181036200309f575050565b620030ab825462002ae0565b67ffffffffffffffff811115620030c657620030c662002a31565b620030d78162002fd0845462002ae0565b6000601f8211600181146200310e5760008315620030f55750848201545b600019600385901b1c1916600184901b1784556200123e565b600085815260209020601f19841690600086815260209020845b838110156200314a578286015482556001958601959091019060200162003128565b50858310156200305f5793015460001960f8600387901b161c19169092555050600190811b01905550565b84815260806020820152600062003190608083018662002d3a565b60ff949094166040830152506060015292915050565b60006000198203620031bc57620031bc62002a6b565b5060010190565b7f474153205245504f52543a200000000000000000000000000000000000000000815260008351620031fd81600c85016020880162002977565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200323c81600d84016020880162002977565b01600d01949350505050565b82815260006020808301845182860160005b8281101562003278578151845292840192908401906001016200325a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b506111c4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c15780637826d14d146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610d46565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c610198565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896101a2565b905090565b60006101896101d4565b60006101896102d9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101d15750335b90565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f73797374656d000000000000000000000000000000000000000000000000000060308201526000916102c6910160405160208183030381529060405261026a90610d88565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f490923cd00000000000000000000000000000000000000000000000000000000179052610325565b8060200190518101906101899190610daf565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610320573391505090565b919050565b60606000610331610198565b905073ffffffffffffffffffffffffffffffffffffffff811630036103f457600061035b85610497565b50905073ffffffffffffffffffffffffffffffffffffffff81166103c05784610383866105c2565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103b7929190610e18565b60405180910390fd5b60006103da6103cd6101a2565b36601f19013584886106ff565b94509050806103ec576103ec84610780565b505050610179565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906104489087908790600401610e18565b6000604051808303816000875af1158015610467573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048f9190810190610ecf565b949350505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106104d1576104d1610f04565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061059d9061057790610d88565b857e15020014010000000000000000000000000000000000000000000000000000610788565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b606081601081901b60006105d583610872565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106305761062b7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610889565b610667565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561069d5761069883610889565b6106d4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016106e693929190610f1a565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610725848888610935565b6040516107329190610fa8565b600060405180830381855af49150503d806000811461076d576040519150601f19603f3d011682016040523d82523d6000602084013e610772565b606091505b509097909650945050505050565b805160208201fd5b60606000606060006107986102d9565b90503073ffffffffffffffffffffffffffffffffffffffff8216036107ce576107c2878787610965565b93509350935050610869565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd90610824908a908a908a90600401610fc4565b600060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c2919081019061101b565b93509350939050565b60006108806070601061109e565b9190911b919050565b606060005b60108110156108f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156108f857806108f0816110b1565b91505061088e565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000094909416602085015280516030909401905282525090565b606083838360405160200161094c939291906110cb565b60405160208183030381529060405290505b9392505050565b606060006060600061097685610a6d565b9050610983878783610a90565b9350600061099086610ad2565b90508015610a62576109a28888610b0f565b935066ffffffffffffff841667ffffffffffffffff8111156109c6576109c6610e31565b6040519080825280601f01601f1916602001820160405280156109f0576020820181803683370190505b5092506020830160005b828160ff161015610a5f576000610a128b8b84610b22565b90506000610a2f888460ff166028026038011c64ffffffffff1690565b9050610a3e8260008387610ba2565b610a48818561109e565b935050508080610a579061111d565b9150506109fa565b50505b505093509350939050565b60006008610a7d6002602061113c565b610a87919061114f565b9190911c919050565b606081600003610aaf575060408051602081019091526000815261095e565b6000610abb8585610c6f565b9050610ac981600085610cc5565b95945050505050565b60006008600180610ae56002602061113c565b610aef919061113c565b610af9919061113c565b610b03919061114f565b8260ff911c1692915050565b600061095e610b1e8484610cf0565b5490565b60008383604051602001610b37929190611166565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610c2b5760208310610bcc57602083048401935060208381610bc857610bc86111a1565b0692505b8215610c2b576020839003600081841015610bf05750600019600884021c19610bfb565b50600019600882021c195b8554600886021b811984511682821617845250818411610c1c575050610c69565b50600194909401939182900391015b5b60208210610c4d5783548152600190930192601f1990910190602001610c2c565b8115610c695780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610c84929190611166565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ce885858584610ba2565b509392505050565b60008282604051602001610d05929190611166565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610d5857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461095e57600080fd5b80516020808301519190811015610da9576000198160200360031b1b821691505b50919050565b600060208284031215610dc157600080fd5b5051919050565b60005b83811015610de3578181015183820152602001610dcb565b50506000910152565b60008151808452610e04816020860160208601610dc8565b601f01601f19169290920160200192915050565b82815260406020820152600061048f6040830184610dec565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610e5857600080fd5b815167ffffffffffffffff80821115610e7357610e73610e31565b604051601f8301601f19908116603f01168101908282118183101715610e9b57610e9b610e31565b81604052838152866020858801011115610eb457600080fd5b610ec5846020830160208901610dc8565b9695505050505050565b600060208284031215610ee157600080fd5b815167ffffffffffffffff811115610ef857600080fd5b61048f84828501610e47565b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451610f7b816003860160208901610dc8565b808401905081600382015284519150610f9b826004830160208801610dc8565b0160040195945050505050565b60008251610fba818460208701610dc8565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561100557845183529383019391830191600101610fe9565b5050809350505050826040830152949350505050565b60008060006060848603121561103057600080fd5b835167ffffffffffffffff8082111561104857600080fd5b61105487838801610e47565b945060208601519350604086015191508082111561107157600080fd5b5061107e86828701610e47565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082018082111561017957610179611088565b600060001982036110c4576110c4611088565b5060010190565b600084516110dd818460208901610dc8565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff810361113357611133611088565b60010192915050565b8181038181111561017957610179611088565b808202811582820484141761017957610179611088565b82815260006020808301845182860160005b8281101561119457815184529284019290840190600101611178565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a676574206120756e6971756520656e74697479206e6f6e63652028726f6f74206d6f64756c6529676574206120756e6971756520656e74697479206e6f6e636520286e6f6e2d726f6f74206d6f64756c6529a164736f6c6343000815000a","sourceMap":"1477:4359:201:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1791:166;;;:::i;:::-;;2170:134:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;3671:942:201:-;;;:::i;2806:624::-;;;:::i;2456:178:107:-;;;:::i;:::-;;;;;;;:::i;1961:616:201:-;;;:::i;2581:221::-;;;:::i;2310:140:107:-;;;:::i;:::-;;;;;;;:::i;4617:1217:201:-;;;:::i;2787:146:107:-;;;:::i;3434:233:201:-;;;:::i;1875:141:107:-;;;:::i;1819:584:101:-;;;:::i;:::-;;;4024:14:203;;4017:22;3999:41;;3987:2;3972:18;1819:584:101;3859:187:203;2022:142:107;;;:::i;1572:26:101:-;;;;;;;;;1791:166:201;1848:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1821:5:201;:40;;;;-1:-1:-1;;;;;1821:40:201;;;;;;;;;1867:16;1884:18;:16;:18::i;:::-;1867:36;;;;;;;;;;-1:-1:-1;;;;;4235:55:203;;;1867:36:201;;;4217:74:203;4190:18;;1867:36:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1945:5:201;;996:42:24;2304:38;;;;-1:-1:-1;;;;;1945:5:201;;;2304:38:24;;;;;;-1:-1:-1;1909:43:201;;-1:-1:-1;2241:106:24;1909:43:201;1791:166::o;2170:134:107:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:107;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:107;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:107;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;3671:942:201:-;3733:8;;3748:5;;3768:18;;;3788:12;;;3712:18;3788:12;;;;;;;;;-1:-1:-1;;;3748:53:201;;-1:-1:-1;;;;;3748:5:201;;;;:19;;:53;;3768:18;;;;;3748:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3921:20:201;;;;;3879:36;3921:20;;;4217:74:203;;;3879:36:201;-1:-1:-1;3921:13:201;;-1:-1:-1;3921:13:201;;4190:18:203;;3921:20:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3994:5:201;;3947:20;;-1:-1:-1;3978:22:201;;-1:-1:-1;;;;;;3994:5:201;3978:15;:22::i;:::-;3970:31;-1:-1:-1;4051:49:201;4060:25;4077:7;4060:16;:25::i;:::-;4087:12;4051:8;:49::i;:::-;4182:5;;4149:59;;4166:22;;-1:-1:-1;;;;;4182:5:201;4166:15;:22::i;:::-;4191:16;:12;4206:1;4191:16;:::i;:::-;4149:8;:59::i;:::-;4214:53;4223:25;4240:7;4223:16;:25::i;4214:53::-;4327:15;;4382:40;4432:104;:93;4468:14;277:23:188;438:16;4432:25:201;:93::i;:::-;:102;:104::i;:::-;4546:5;4350:209;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4350:209:201;;;;;;;;;;;;;;;;;;;;;;;4327:238;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4588:5:201;;4571:37;;-1:-1:-1;;;;;;4588:5:201;;-1:-1:-1;4595:7:201;4604:3;4571:16;:37::i;:::-;3706:907;;;3671:942::o;2806:624::-;2867:8;;2882:50;;;;;;;;;;;;;;;;;;;;:14;:50::i;:::-;2938:5;;2962:18;;;2982:12;;;2938:5;2982:12;;;;;;;;;2938:57;;;-1:-1:-1;;;;;2938:5:201;;;;:23;;:57;;2962:18;;;;;2938:57;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3001:14;:12;:14::i;:::-;3022:57;;;;;;;;;;;;;;;;;;:14;:57::i;:::-;3132:5;;3085:20;;3116:22;;-1:-1:-1;;;;;3132:5:201;3116:15;:22::i;:::-;3108:31;-1:-1:-1;3145:14:201;:12;:14::i;:::-;3209:49;3218:25;3235:7;3218:16;:25::i;3209:49::-;3340:5;;3307:59;;3324:22;;-1:-1:-1;;;;;3340:5:201;3324:15;:22::i;3307:59::-;3372:53;3381:25;3398:7;3381:16;:25::i;3372:53::-;2840:590;;2806:624::o;2456:178:107:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;1961:616:201:-;2018:8;;2033:46;;;;;;;;;;;;;;;;;;;:14;:46::i;:::-;2085:5;;2105:18;;;2125:12;;;2085:5;2125:12;;;;;;;;;-1:-1:-1;;;2085:53:201;;-1:-1:-1;;;;;2085:5:201;;;;:19;;:53;;2105:18;;;;;2085:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2144:14;:12;:14::i;:::-;2165:61;;;;;;;;;;;;;;;;;;:14;:61::i;2581:221::-;2622:5;;2642:18;;;2662:12;;;2622:5;2662:12;;;;;;;;;-1:-1:-1;;;2622:53:201;;-1:-1:-1;;;;;2622:5:201;;;;:19;;:53;;2642:18;;;;;2622:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2681:57:201;;;;;2697:40;2681:57;;;6125:98:203;2681:15:201;;-1:-1:-1;2681:15:201;;-1:-1:-1;6098:18:203;;2681:57:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2744:5:201;;2764:18;;-1:-1:-1;;;;;2744:5:201;;;;-1:-1:-1;2744:19:201;;-1:-1:-1;2764:18:201;2744:5;2784:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2784:12:201;;2744:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2581:221::o;2310:140:107:-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4617:1217:201;4666:5;;4686:18;;;4706:12;;;4666:5;4706:12;;;;;;;;;-1:-1:-1;;;4666:53:201;;-1:-1:-1;;;;;4666:5:201;;;;:19;;:53;;4686:18;;;;;4666:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4806:45;4854:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4806:76;;4888:35;4926:123;4968:15;4926:123;;:25;:123::i;:::-;5055:5;;:66;;;;;539:36:59;2781:46;;816:18:94;2780:74:59;5055:66:201;;;6853:25:203;4888:161:201;;-1:-1:-1;;;;;;5055:5:201;;:23;;6826:18:203;;5055:66:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5127:5:201;;:76;;;;;;;;7149:25:203;;;-1:-1:-1;;;;;7210:55:203;;;7190:18;;;7183:83;5127:5:201;7282:18:203;;;7275:50;5127:5:201;;;;-1:-1:-1;5127:20:201;;-1:-1:-1;7122:18:203;;5127:76:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5313:5:201;;5350:59;;;;;;;;;;;;;;;;;;;;;;;5313:97;;;;;5271:21;;-1:-1:-1;;;;;;5313:5:201;;;;-1:-1:-1;5313:10:201;;:97;;5324:24;;5350:59;5313:97;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5313:97:201;;;;;;;;;;;;:::i;:::-;5295:138;;;;;;;;;;;;:::i;:::-;5481:5;;5518:59;;;;;;;;;;;;;;;;;;;;;;;5481:97;;;;;5271:162;;-1:-1:-1;5439:21:201;;-1:-1:-1;;;;;5481:5:201;;;;:10;;:97;;5492:24;;5518:59;;5481:97;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5481:97:201;;;;;;;;;;;;:::i;:::-;5463:138;;;;;;;;;;;;:::i;:::-;5647:5;;5439:162;;-1:-1:-1;5607:21:201;;5631:22;;-1:-1:-1;;;;;5647:5:201;5631:15;:22::i;:::-;5607:46;-1:-1:-1;5703:60:201;5720:13;5736:26;5744:13;5761:1;5736:26;:::i;5703:60::-;5769;5786:13;5802:26;5810:13;5827:1;5802:26;:::i;5769:60::-;4660:1174;;;;;4617:1217::o;2787:146:107:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:233:201;3479:5;;3503:18;;;3523:12;;;3479:5;3523:12;;;;;;;;;3479:57;;;-1:-1:-1;;;;;3479:5:201;;;;:23;;:57;;3503:18;;;;;3479:57;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3542:57:201;;;;;3558:40;3542:57;;;6125:98:203;3542:15:201;;-1:-1:-1;3542:15:201;;-1:-1:-1;6098:18:203;;3542:57:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3605:5:201;;3629:18;;-1:-1:-1;;;;;3605:5:201;;;;-1:-1:-1;3605:23:201;;-1:-1:-1;3629:18:201;3605:5;3649:12;;1875:141:107;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:101;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:101;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;9164:74:203;;;2221:17:101;9254:18:203;;;9247:34;2196:43:101;;;;;;;;;9137:18:203;;;2196:43:101;;;-1:-1:-1;;1671:64:101;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:101;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:101:o;2022:142:107:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:107;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;514:223:100:-;551:10;600:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;636:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;671:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;700:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;578:156;;;;;:::i;:::-;-1:-1:-1;;;;;10731:15:203;;;10713:34;;10783:15;;;10778:2;10763:18;;10756:43;10835:15;;;10830:2;10815:18;;10808:43;10887:15;;;10882:2;10867:18;;10860:43;10639:3;10624:19;578:156:100;;;;;;;;;;;;;;;;;;;;;;;567:167;;514:223;:::o;862:161:189:-;914:20;975:5;-1:-1:-1;;;;;947:71:189;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;940:80;862:161;-1:-1:-1;;862:161:189:o;4317:253:190:-;4424:16;;;4374:13;4424:16;;;;;;;;;4447:13;4463:64;4490:8;4395:45;4447:13;1162:66;4463:26;:64::i;:::-;4447:80;4317:253;-1:-1:-1;;;;4317:253:190:o;5209:262:101:-;5271:1;5266;:6;5262:203;;5293:41;;;;;11116:2:203;11098:21;;;11155:2;11135:18;;;11128:30;11194:34;11189:2;11174:18;;11167:62;11265:4;11260:2;11245:18;;11238:32;11302:3;11287:19;;10914:398;5293:41:101;;;;;;;;5353:31;;;11529:21:203;;;11586:2;11566:18;;;11559:30;11625:12;11620:2;11605:18;;11598:40;11705:4;11690:20;;11683:36;;;5353:31:101;;;;;;;11670:3:203;5353:31:101;;;5403;;;11942:21:203;;;11999:2;11979:18;;;11972:30;12038:12;12033:2;12018:18;;12011:40;12118:4;12103:20;;12096:36;;;5403:31:101;;;;;;;12083:3:203;5403:31:101;;;5448:6;:4;:6::i;941:257:59:-;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;1084:15;;;1103:31;336:5:16;1103:31:59;;;;1084:51;-1:-1:-1;;1139:13:59;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;3312:592::-;3376:13;3446:10;336:5:16;2463:44:59;;;3397:19;3544;3446:10;3544:7;:19::i;:::-;3521:42;-1:-1:-1;3626:12:59;3665:35;;;;:102;;3714:53;;;;:34;:53::i;:::-;3665:102;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3794:25:59;;;:87;;3833:48;3868:12;3833:34;:48::i;:::-;3794:87;;;;;;;;;;;;;;;;;;;;;3598:293;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3569:330;;;;;3312:592;;;:::o;6572:222:190:-;6680:16;;;6651:26;6680:16;;;;;;;;6749:25;;;13202:19:203;;;6749:25:190;;;;;;;;;13237:12:203;;;6749:25:190;;;;6703:86;;;;6680:16;;-1:-1:-1;;;;;6703:21:190;;;;;:86;;6725:8;;6680:16;;6651:26;1162:66;6703:86;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6645:149;6572:222;;;:::o;330:580:0:-;394:39;;;;;;;;;14628:21:203;;;;14685:2;14665:18;;;14658:30;14724:22;14704:18;;;14697:50;309:37:102;14799:20:203;;;14792:52;394:8:0;;;;14764:19:203;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:102;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:102;;883:22:0;;;;;;;309:37:102;883:20:0;:22;;;;;;;;;;;;;;;;;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;14628:21:203;;;;14685:2;14665:18;;;14658:30;14724:22;14704:18;;;14697:50;309:37:102;14799:20:203;;;14792:52;953:23:0;;-1:-1:-1;987:8:0;;;;14764:19:203;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;20245:2:203;1214:49:0;;;20227:21:203;20284:2;20264:18;;;20257:30;20323:27;20303:18;;;20296:55;20368:18;;1214:49:0;20043:349:203;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;17702:457:24:-;17859:7;17874:21;17898:17;:15;:17::i;:::-;17874:41;-1:-1:-1;17950:4:24;-1:-1:-1;;;;;17925:30:24;;;17921:234;;17972:68;17997:7;18006:8;18016:10;18028:11;17972:24;:68::i;:::-;17965:75;;;;;17921:234;18068:80;;;;;-1:-1:-1;;;;;18068:36:24;;;;;:80;;18105:7;;18114:8;;18124:10;;18136:11;;18068:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2409:432:101:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;22910:74:203;;;2677:17:101;23000:18:203;;;22993:34;;;;2712:4:101;23043:18:203;;;23036:34;2489:11:101;;1671:64;2586:43;;22883:18:203;;2652:67:101;;;-1:-1:-1;;2652:67:101;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:101;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:101;2820:7;:14;;;;;;;;2409:432::o;2991:160:59:-;3054:7;3118:26;399:6;336:5:16;3118:26:59;:::i;:::-;3084:61;;;;;2991:160;-1:-1:-1;2991:160:59:o;1757:322::-;1827:13;1848:14;1868:80;1884:2;1875:6;:11;1868:80;;;-1:-1:-1;;1902:34:59;;3181:1:2;3177:13;;3173:24;1902:39:59;;1898:50;1943:5;1898:50;1888:8;;;;:::i;:::-;;;;1868:80;;;1984:30;;;-1:-1:-1;;23422:79:203;;1984:30:59;;;23410:92:203;1984:30:59;;23518:12:203;;;;1984:30:59;;;809:21:2;;;1984:30:59;2034:39;694:164:2;1754:155:0;1818:86;317:28:102;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;6853:25:203;;;6841:2;6826:18;;6676:208;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;:::-;1754:155;:::o;1766:227:24:-;996:42;1855:22;1816:7;;-1:-1:-1;;;;;1855:22:24;;1883:106;;1931:10;1924:17;;;1766:227;:::o;35595:541:20:-;35752:7;35889:242;35933:59;35974:7;35983:8;35933:40;:59::i;:::-;36010:31;;;;4286:19:3;:27;537:1:30;4285:44:3;4251:79;;;4238:93;36059:63:20;36098:11;36111:10;36059:38;:63::i;:::-;35889:17;:242::i;:::-;35876:255;35595:541;-1:-1:-1;;;;;35595:541:20:o;5630:121:115:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:115;;;;;;;;;;;;;;;;;;;;5685:15;:59::i;50003:191:20:-;50105:7;50169;50178:8;50152:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;50152:35:20;;;;;;;;;50142:46;;50152:35;50142:46;;;;41609:22;50135:53;;50003:191;-1:-1:-1;;;50003:191:20:o;51020:242::-;51116:7;;;51155:84;51175:10;51171:14;;:1;:14;51155:84;;;51200:32;4238:93:3;4286:19;:27;;;537:1:30;4285:44:3;4251:79;;;4238:93;51200:32:20;;:::i;:::-;;-1:-1:-1;51187:3:20;;;;:::i;:::-;;;;51155:84;;;-1:-1:-1;51251:6:20;51020:242;-1:-1:-1;;;51020:242:20:o;8867:812:19:-;8965:14;9001:2;8991:6;:12;8987:112;;9060:2;9051:6;:11;9033:29;;;;9082:2;9072:12;;;;;;:::i;:::-;;;;8987:112;-1:-1:-1;9290:21:19;;9275:12;9263:25;;9259:53;9438:2;:11;;;9520:22;;;9516:159;;;9656:1;9640:14;9636:22;9630:29;9615:12;9600:13;9596:32;9592:68;9584:6;9581:80;9571:90;;8981:698;8867:812;;;;;:::o;181:376:115:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:203:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:203;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:203;;14:681;-1:-1:-1;;;;;;14:681:203:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;-1:-1:-1;;1384:95:203;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:203;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:203;;;;2283:5;-1:-1:-1;;;2311:15:203;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:203;;700:1697;-1:-1:-1;;;;;;;;;700:1697:203:o;2402:250::-;2487:1;2497:113;2511:6;2508:1;2505:13;2497:113;;;2587:11;;;2581:18;2568:11;;;2561:39;2533:2;2526:10;2497:113;;;-1:-1:-1;;2644:1:203;2626:16;;2619:27;2402:250::o;2657:330::-;2699:3;2737:5;2731:12;2764:6;2759:3;2752:19;2780:76;2849:6;2842:4;2837:3;2833:14;2826:4;2819:5;2815:16;2780:76;:::i;:::-;2901:2;2889:15;-1:-1:-1;;2885:88:203;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:203:o;2992:862::-;3154:4;3183:2;3223;3212:9;3208:18;3253:2;3242:9;3235:21;3276:6;3311;3305:13;3342:6;3334;3327:22;3380:2;3369:9;3365:18;3358:25;;3442:2;3432:6;3429:1;3425:14;3414:9;3410:30;3406:39;3392:53;;3480:2;3472:6;3468:15;3501:1;3511:314;3525:6;3522:1;3519:13;3511:314;;;-1:-1:-1;;3602:9:203;3594:6;3590:22;3586:95;3581:3;3574:108;3705:40;3738:6;3729;3723:13;3705:40;:::i;:::-;3695:50;-1:-1:-1;3803:12:203;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:203;;2992:862;-1:-1:-1;;;;;;;2992:862:203:o;4302:184::-;-1:-1:-1;;;4351:1:203;4344:88;4451:4;4448:1;4441:15;4475:4;4472:1;4465:15;4491:367;-1:-1:-1;;;;;4699:6:203;4695:55;4684:9;4677:74;4787:2;4782;4771:9;4767:18;4760:30;4658:4;4807:45;4848:2;4837:9;4833:18;4825:6;4807:45;:::i;5094:184::-;-1:-1:-1;;;5143:1:203;5136:88;5243:4;5240:1;5233:15;5267:4;5264:1;5257:15;5283:125;5348:9;;;5369:10;;;5366:36;;;5382:18;;:::i;5413:340::-;5590:2;5579:9;5572:21;5553:4;5610:45;5651:2;5640:9;5636:18;5628:6;5610:45;:::i;:::-;5602:53;;-1:-1:-1;;;;;5695:6:203;5691:55;5686:2;5675:9;5671:18;5664:83;5413:340;;;;;:::o;5758:218::-;5905:2;5894:9;5887:21;5868:4;5925:45;5966:2;5955:9;5951:18;5943:6;5925:45;:::i;:::-;5917:53;5758:218;-1:-1:-1;;;5758:218:203:o;6234:437::-;6313:1;6309:12;;;;6356;;;6377:61;;6431:4;6423:6;6419:17;6409:27;;6377:61;6484:2;6476:6;6473:14;6453:18;6450:38;6447:218;;-1:-1:-1;;;6518:1:203;6511:88;6622:4;6619:1;6612:15;6650:4;6647:1;6640:15;6447:218;;6234:437;;;:::o;7336:320::-;7542:6;7531:9;7524:25;7585:2;7580;7569:9;7565:18;7558:30;7505:4;7605:45;7646:2;7635:9;7631:18;7623:6;7605:45;:::i;7661:673::-;7736:5;7766:18;7807:2;7799:6;7796:14;7793:40;;;7813:18;;:::i;:::-;7947:2;7941:9;8013:2;8001:15;;-1:-1:-1;;7997:24:203;;;8023:2;7993:33;7989:42;7977:55;;;8047:18;;;8067:22;;;8044:46;8041:72;;;8093:18;;:::i;:::-;8133:10;8129:2;8122:22;8162:6;8153:15;;8192:6;8184;8177:22;8232:3;8223:6;8218:3;8214:16;8211:25;8208:45;;;8249:1;8246;8239:12;8208:45;8262:66;8321:6;8314:4;8306:6;8302:17;8297:3;8262:66;:::i;:::-;;;;7661:673;;;;;:::o;8339:457::-;8418:6;8471:2;8459:9;8450:7;8446:23;8442:32;8439:52;;;8487:1;8484;8477:12;8439:52;8520:9;8514:16;8553:18;8545:6;8542:30;8539:50;;;8585:1;8582;8575:12;8539:50;8608:22;;8661:4;8653:13;;8649:27;-1:-1:-1;8639:55:203;;8690:1;8687;8680:12;8639:55;8713:77;8782:7;8777:2;8771:9;8766:2;8762;8758:11;8713:77;:::i;8801:184::-;8871:6;8924:2;8912:9;8903:7;8899:23;8895:32;8892:52;;;8940:1;8937;8930:12;8892:52;-1:-1:-1;8963:16:203;;8801:184;-1:-1:-1;8801:184:203:o;9292:430::-;9489:66;9481:6;9477:79;9472:3;9465:92;9447:3;9586:6;9580:13;9602:74;9669:6;9665:1;9660:3;9656:11;9649:4;9641:6;9637:17;9602:74;:::i;:::-;9696:16;;;;9714:1;9692:24;;9292:430;-1:-1:-1;;;9292:430:203:o;9727:287::-;9856:3;9894:6;9888:13;9910:66;9969:6;9964:3;9957:4;9949:6;9945:17;9910:66;:::i;:::-;9992:16;;;;;9727:287;-1:-1:-1;;9727:287:203:o;10019:277::-;10086:6;10139:2;10127:9;10118:7;10114:23;10110:32;10107:52;;;10155:1;10152;10145:12;10107:52;10187:9;10181:16;10240:5;10233:13;10226:21;10219:5;10216:32;10206:60;;10262:1;10259;10252:12;12143:925;12592:66;12584:6;12580:79;12575:3;12568:92;12550:3;12679;12711:2;12707:1;12702:3;12698:11;12691:23;12743:6;12737:13;12759:74;12826:6;12822:1;12817:3;12813:11;12806:4;12798:6;12794:17;12759:74;:::i;:::-;12861:6;12856:3;12852:16;12842:26;;12896:2;12892:1;12888:2;12884:10;12877:22;12930:6;12924:13;12908:29;;12946:75;13012:8;13008:1;13004:2;13000:10;12993:4;12985:6;12981:17;12946:75;:::i;:::-;13041:17;13060:1;13037:25;;12143:925;-1:-1:-1;;;;;12143:925:203:o;13260:435::-;13313:3;13351:5;13345:12;13378:6;13373:3;13366:19;13404:4;13433:2;13428:3;13424:12;13417:19;;13470:2;13463:5;13459:14;13491:1;13501:169;13515:6;13512:1;13509:13;13501:169;;;13576:13;;13564:26;;13610:12;;;;13645:15;;;;13537:1;13530:9;13501:169;;;-1:-1:-1;13686:3:203;;13260:435;-1:-1:-1;;;;;13260:435:203:o;13700:717::-;14077:6;14066:9;14059:25;14120:3;14115:2;14104:9;14100:18;14093:31;14040:4;14147:57;14199:3;14188:9;14184:19;14176:6;14147:57;:::i;:::-;14252:4;14244:6;14240:17;14235:2;14224:9;14220:18;14213:45;14306:9;14298:6;14294:22;14289:2;14278:9;14274:18;14267:50;14334:33;14360:6;14352;14334:33;:::i;:::-;14326:41;;;14404:6;14398:3;14387:9;14383:19;14376:35;13700:717;;;;;;;;:::o;14981:780::-;15031:3;15072:5;15066:12;15101:36;15127:9;15101:36;:::i;:::-;15156:1;15173:18;;;15200:191;;;;15405:1;15400:355;;;;15166:589;;15200:191;15248:66;15237:9;15233:82;15228:3;15221:95;15371:6;15364:14;15357:22;15349:6;15345:35;15340:3;15336:45;15329:52;;15200:191;;15400:355;15431:5;15428:1;15421:16;15460:4;15505:2;15502:1;15492:16;15530:1;15544:165;15558:6;15555:1;15552:13;15544:165;;;15636:14;;15623:11;;;15616:35;15679:16;;;;15573:10;;15544:165;;;15548:3;;;15738:6;15733:3;15729:16;15722:23;;15166:589;;;;;14981:780;;;;:::o;15766:664::-;16116:66;16111:3;16104:79;16086:3;16202:47;16245:2;16240:3;16236:12;16228:6;16202:47;:::i;:::-;16269:66;16258:78;;16365:31;16360:2;16352:11;;16345:52;16421:2;16413:11;;15766:664;-1:-1:-1;;;15766:664:203:o;16954:694::-;17297:66;17292:3;17285:79;17267:3;17393:6;17387:13;17409:75;17477:6;17472:2;17467:3;17463:12;17456:4;17448:6;17444:17;17409:75;:::i;:::-;17548:66;17543:2;17503:16;;;;17535:11;;;17528:87;-1:-1:-1;17639:2:203;17631:11;;16954:694;-1:-1:-1;16954:694:203:o;17653:545::-;17755:2;17750:3;17747:11;17744:448;;;17791:1;17816:5;17812:2;17805:17;17861:4;17857:2;17847:19;17931:2;17919:10;17915:19;17912:1;17908:27;17902:4;17898:38;17967:4;17955:10;17952:20;17949:47;;;-1:-1:-1;17990:4:203;17949:47;18045:2;18040:3;18036:12;18033:1;18029:20;18023:4;18019:31;18009:41;;18100:82;18118:2;18111:5;18108:13;18100:82;;;18163:17;;;18144:1;18133:13;18100:82;;;18104:3;;;17653:545;;;:::o;18434:1471::-;18560:3;18554:10;18587:18;18579:6;18576:30;18573:56;;;18609:18;;:::i;:::-;18638:97;18728:6;18688:38;18720:4;18714:11;18688:38;:::i;:::-;18682:4;18638:97;:::i;:::-;18790:4;;18854:2;18843:14;;18871:1;18866:782;;;;19692:1;19709:6;19706:89;;;-1:-1:-1;19761:19:203;;;19755:26;19706:89;-1:-1:-1;;18331:1:203;18327:11;;;18323:84;18319:89;18309:100;18415:1;18411:11;;;18306:117;19808:81;;18836:1063;;18866:782;14928:1;14921:14;;;14965:4;14952:18;;-1:-1:-1;;18902:79:203;;;19079:236;19093:7;19090:1;19087:14;19079:236;;;19182:19;;;19176:26;19161:42;;19274:27;;;;19242:1;19230:14;;;;19109:19;;19079:236;;;19083:3;19343:6;19334:7;19331:19;19328:261;;;19404:19;;;19398:26;-1:-1:-1;;19487:1:203;19483:14;;;19499:3;19479:24;19475:97;19471:102;19456:118;19441:134;;19328:261;-1:-1:-1;;;;;19635:1:203;19619:14;;;19615:22;19602:36;;-1:-1:-1;18434:1471:203:o;19910:128::-;19977:9;;;19998:11;;;19995:37;;;20012:18;;:::i;20397:197::-;20525:3;20550:38;20584:3;20576:6;20550:38;:::i;20599:1554::-;20718:3;20712:4;20709:13;20706:26;;20725:5;;20599:1554::o;20706:26::-;20755:37;20787:3;20781:10;20755:37;:::i;:::-;20815:18;20807:6;20804:30;20801:56;;;20837:18;;:::i;:::-;20866:97;20956:6;20916:38;20948:4;20942:11;20916:38;:::i;20866:97::-;20989:1;21017:2;21009:6;21006:14;21034:1;21029:867;;;;21940:1;21957:6;21954:89;;;-1:-1:-1;22009:19:203;;;22003:26;21954:89;-1:-1:-1;;18331:1:203;18327:11;;;18323:84;18319:89;18309:100;18415:1;18411:11;;;18306:117;22056:81;;20999:1148;;21029:867;14928:1;14921:14;;;14965:4;14952:18;;-1:-1:-1;;21065:79:203;;;14928:1;14921:14;;;14965:4;14952:18;;21288:9;21310:251;21324:7;21321:1;21318:14;21310:251;;;21406:21;;;21400:28;21385:44;;21456:1;21529:18;;;;21484:15;;;;21347:4;21340:12;21310:251;;;21314:3;21589:6;21580:7;21577:19;21574:263;;;21650:21;;21644:28;-1:-1:-1;;21747:3:203;21735:1;21731:14;;;21727:24;21723:97;21719:102;21704:118;21689:134;;;-1:-1:-1;;21883:1:203;21867:14;;;21863:22;21850:36;;-1:-1:-1;20599:1554:203:o;22158:545::-;22479:6;22468:9;22461:25;22522:3;22517:2;22506:9;22502:18;22495:31;22442:4;22543:57;22595:3;22584:9;22580:19;22572:6;22543:57;:::i;:::-;22648:4;22636:17;;;;22631:2;22616:18;;22609:45;-1:-1:-1;22685:2:203;22670:18;22663:34;22535:65;22158:545;-1:-1:-1;;22158:545:203:o;23081:195::-;23120:3;-1:-1:-1;;23144:5:203;23141:77;23138:103;;23221:18;;:::i;:::-;-1:-1:-1;23268:1:203;23257:13;;23081:195::o;24186:764::-;24576:14;24571:3;24564:27;24546:3;24620:6;24614:13;24636:75;24704:6;24699:2;24694:3;24690:12;24683:4;24675:6;24671:17;24636:75;:::i;:::-;24775:3;24770:2;24730:16;;;24762:11;;;24755:24;24804:13;;24826:76;24804:13;24888:2;24880:11;;24873:4;24861:17;;24826:76;:::i;:::-;24922:17;24941:2;24918:26;;24186:764;-1:-1:-1;;;;24186:764:203:o;24955:639::-;25205:6;25200:3;25193:19;25175:3;25231:2;25264;25259:3;25255:12;25296:6;25290:13;25361:2;25353:6;25349:15;25382:1;25392:175;25406:6;25403:1;25400:13;25392:175;;;25469:13;;25455:28;;25505:14;;;;25542:15;;;;25428:1;25421:9;25392:175;;;-1:-1:-1;25583:5:203;;24955:639;-1:-1:-1;;;;;;;24955:639:203:o;25599:184::-;-1:-1:-1;;;25648:1:203;25641:88;25748:4;25745:1;25738:15;25772:4;25769:1;25762:15","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAccessInWorldContext()":"8a5fc888","testInstall()":"786bd7bc","testInstallRoot()":"5ecdf433","testInstallRootTwice()":"974884d5","testInstallTwice()":"78cdebf9","testPublicAccess()":"4f956662"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAccessInWorldContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallRootTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPublicAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/UniqueEntityModule.t.sol\":\"UniqueEntityModuleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a\",\"dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f\",\"dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d\",\"dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5\",\"dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8\",\"dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9\",\"dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3\",\"dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e\",\"dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a\",\"dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738\",\"dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f\",\"dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9\",\"dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695\",\"dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee\",\"dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793\",\"dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25\",\"dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952\",\"dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35\",\"dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c\",\"dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef\",\"dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce\",\"dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01\",\"dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14\",\"dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc\",\"dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV\"]},\"node_modules/@latticexyz/world/src/codegen/index.sol\":{\"keccak256\":\"0x01fd0a07213a3f79997c859ae5f8c19fc3f1cc3a0fe7201b50c3e32082538610\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://902a6bc854a9b0134a97e47dea61a330c0e24d5eb315615c21c879b57c5da7c8\",\"dweb:/ipfs/Qmcx9Zr24GbnrRvEFMGgyzZcwmeXxbyz87Lb8BonKRW6PX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024\",\"dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol\":{\"keccak256\":\"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43\",\"dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961\",\"dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e\",\"dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91\",\"dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4\",\"dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b\",\"dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b\",\"dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a\",\"dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436\",\"dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330\",\"dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231\",\"dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231\",\"dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9\",\"dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol\":{\"keccak256\":\"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417\",\"dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e\",\"dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0\",\"dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e\",\"dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6\",\"dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24\",\"dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198\",\"dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795\",\"dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45\",\"dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4\"]},\"node_modules/@latticexyz/world/test/createCoreModule.sol\":{\"keccak256\":\"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2\",\"dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/interfaces/IUniqueEntitySystem.sol\":{\"keccak256\":\"0x522fec5a5d0005c6902235f49e9c59570c158ff470472d91afb81c8934d1f8b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c65e929a0196d5333f3642a62c21334df295fbdac98660e4ace31ad9d2a22cea\",\"dweb:/ipfs/QmeLXDZrnMQKaBF6nALVsV6HyutugrsCQaqch64YnZ69ya\"]},\"src/modules/uniqueentity/UniqueEntityModule.sol\":{\"keccak256\":\"0xc34a240aa9cb2ab69563b1ac1352d70c2a1d2dc70939c0f04dea9cfb58face68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c052d7e04d3c9745de9ab311f185018b6f7c739905492a01186c1cbf64ba14f\",\"dweb:/ipfs/QmR91MqzvPSsDJx2sT4yh8x8xVFQHzNNxBiK7zF4HGHiLJ\"]},\"src/modules/uniqueentity/UniqueEntitySystem.sol\":{\"keccak256\":\"0x7459e16f89df6b682f5dd355d0f9178c0d540d6388db0740fdb832d871a8e4bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64667b045d4af2ec8ee9856a8377e0d61563cbcd4953bdff75e60dc08e055d65\",\"dweb:/ipfs/QmUAHh1AMyG1Mq4SH5is2q97V3tAc3nqjcx5AzRWkATe5K\"]},\"src/modules/uniqueentity/constants.sol\":{\"keccak256\":\"0x935e1f7df4e8f1d80eb32acdab6b2858a338a7e55e3b18c72a2d9ab6235d8aa5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fe96e5efe8fab8a4c9397b5900367d571ae767c8f6570a7002c50ffed34d955\",\"dweb:/ipfs/QmX9fDKquaeeyZHwzYUaZdUbN5xFhWsMNsZwQuzNQ4mvRR\"]},\"src/modules/uniqueentity/getUniqueEntity.sol\":{\"keccak256\":\"0xf83b6e046aae9e6bb8b83102118bfaa08851adf5fc0322dd80d1c5515e0a85b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09388d89f2a78968f12ad01570798191d772e5236948bce50c85cb12eb5d47f6\",\"dweb:/ipfs/QmYCbh4uGErTdyDWw3PLpRrQXbGtca8JmwD5KPUfA6kk8U\"]},\"src/modules/uniqueentity/tables/UniqueEntity.sol\":{\"keccak256\":\"0x15981f4f3413313df8a1dccb6cdb6489ba6c50da7be7651c610d8151bd84e8df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ffaaa3ba664f66cda3e301ef942a2e934d3d4985b9e61385c37474088b5e4c7\",\"dweb:/ipfs/Qma3XkPm3KhyP1wU7vk4FYgXkjPYQSacao6rNht3DscoJS\"]},\"src/utils/SystemSwitch.sol\":{\"keccak256\":\"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da\",\"dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH\"]},\"test/UniqueEntityModule.t.sol\":{\"keccak256\":\"0xe419cc7b82710152d0a8d1e7fe53f9a6384fc2f213aade251dd6270394554401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30292e01cd4743ea6bce6ebaaf7ed374dc99f4a7fffef4d4b38a3a9617310750\",\"dweb:/ipfs/QmX3kcu9WVuAFwRePvQD5dR8cYHS9sKGMqnZw9W1GAQAs9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAccessInWorldContext"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstall"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallRoot"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallRootTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPublicAccess"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/UniqueEntityModule.t.sol":"UniqueEntityModuleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b","urls":["bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a","dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f","urls":["bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f","dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a","urls":["bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d","dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9","urls":["bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5","dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91","urls":["bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8","dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9","urls":["bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9","dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710","urls":["bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3","dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7","urls":["bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e","dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94","urls":["bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a","dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa","urls":["bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738","dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6","urls":["bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f","dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782","urls":["bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9","dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d","urls":["bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695","dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91","urls":["bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee","dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f","urls":["bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793","dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650","urls":["bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25","dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41","urls":["bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952","dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900","urls":["bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35","dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9","urls":["bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c","dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881","urls":["bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef","dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19","urls":["bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce","dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2","urls":["bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01","dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b","urls":["bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14","dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff","urls":["bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc","dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/index.sol":{"keccak256":"0x01fd0a07213a3f79997c859ae5f8c19fc3f1cc3a0fe7201b50c3e32082538610","urls":["bzz-raw://902a6bc854a9b0134a97e47dea61a330c0e24d5eb315615c21c879b57c5da7c8","dweb:/ipfs/Qmcx9Zr24GbnrRvEFMGgyzZcwmeXxbyz87Lb8BonKRW6PX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed","urls":["bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024","dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol":{"keccak256":"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350","urls":["bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43","dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8","urls":["bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961","dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb","urls":["bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e","dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426","urls":["bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91","dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac","urls":["bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4","dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed","urls":["bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b","dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd","urls":["bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b","dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527","urls":["bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a","dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8","urls":["bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436","dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22","urls":["bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330","dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a","urls":["bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231","dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5","urls":["bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231","dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43","urls":["bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9","dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol":{"keccak256":"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125","urls":["bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417","dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0","urls":["bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e","dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc","urls":["bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0","dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc","urls":["bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e","dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d","urls":["bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6","dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc","urls":["bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24","dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427","urls":["bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198","dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039","urls":["bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795","dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3","urls":["bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45","dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4"],"license":"MIT"},"node_modules/@latticexyz/world/test/createCoreModule.sol":{"keccak256":"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8","urls":["bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2","dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/interfaces/IUniqueEntitySystem.sol":{"keccak256":"0x522fec5a5d0005c6902235f49e9c59570c158ff470472d91afb81c8934d1f8b9","urls":["bzz-raw://c65e929a0196d5333f3642a62c21334df295fbdac98660e4ace31ad9d2a22cea","dweb:/ipfs/QmeLXDZrnMQKaBF6nALVsV6HyutugrsCQaqch64YnZ69ya"],"license":"MIT"},"src/modules/uniqueentity/UniqueEntityModule.sol":{"keccak256":"0xc34a240aa9cb2ab69563b1ac1352d70c2a1d2dc70939c0f04dea9cfb58face68","urls":["bzz-raw://4c052d7e04d3c9745de9ab311f185018b6f7c739905492a01186c1cbf64ba14f","dweb:/ipfs/QmR91MqzvPSsDJx2sT4yh8x8xVFQHzNNxBiK7zF4HGHiLJ"],"license":"MIT"},"src/modules/uniqueentity/UniqueEntitySystem.sol":{"keccak256":"0x7459e16f89df6b682f5dd355d0f9178c0d540d6388db0740fdb832d871a8e4bf","urls":["bzz-raw://64667b045d4af2ec8ee9856a8377e0d61563cbcd4953bdff75e60dc08e055d65","dweb:/ipfs/QmUAHh1AMyG1Mq4SH5is2q97V3tAc3nqjcx5AzRWkATe5K"],"license":"MIT"},"src/modules/uniqueentity/constants.sol":{"keccak256":"0x935e1f7df4e8f1d80eb32acdab6b2858a338a7e55e3b18c72a2d9ab6235d8aa5","urls":["bzz-raw://4fe96e5efe8fab8a4c9397b5900367d571ae767c8f6570a7002c50ffed34d955","dweb:/ipfs/QmX9fDKquaeeyZHwzYUaZdUbN5xFhWsMNsZwQuzNQ4mvRR"],"license":"MIT"},"src/modules/uniqueentity/getUniqueEntity.sol":{"keccak256":"0xf83b6e046aae9e6bb8b83102118bfaa08851adf5fc0322dd80d1c5515e0a85b1","urls":["bzz-raw://09388d89f2a78968f12ad01570798191d772e5236948bce50c85cb12eb5d47f6","dweb:/ipfs/QmYCbh4uGErTdyDWw3PLpRrQXbGtca8JmwD5KPUfA6kk8U"],"license":"MIT"},"src/modules/uniqueentity/tables/UniqueEntity.sol":{"keccak256":"0x15981f4f3413313df8a1dccb6cdb6489ba6c50da7be7651c610d8151bd84e8df","urls":["bzz-raw://1ffaaa3ba664f66cda3e301ef942a2e934d3d4985b9e61385c37474088b5e4c7","dweb:/ipfs/Qma3XkPm3KhyP1wU7vk4FYgXkjPYQSacao6rNht3DscoJS"],"license":"MIT"},"src/utils/SystemSwitch.sol":{"keccak256":"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e","urls":["bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da","dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH"],"license":"MIT"},"test/UniqueEntityModule.t.sol":{"keccak256":"0xe419cc7b82710152d0a8d1e7fe53f9a6384fc2f213aade251dd6270394554401","urls":["bzz-raw://30292e01cd4743ea6bce6ebaaf7ed374dc99f4a7fffef4d4b38a3a9617310750","dweb:/ipfs/QmX3kcu9WVuAFwRePvQD5dR8cYHS9sKGMqnZw9W1GAQAs9"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/UniqueEntityModule.t.sol","id":136377,"exportedSymbols":{"GasReporter":[226],"IBaseWorld":[24400],"IModule":[22254],"IWorldErrors":[22430],"NAMESPACE":[125324],"RESOURCE_SYSTEM":[37052],"RESOURCE_TABLE":[15721],"ResourceId":[2782],"StoreSwitch":[8203],"System":[22601],"TABLE_NAME":[125342],"Test":[58812],"UniqueEntity":[126270],"UniqueEntityModule":[125271],"UniqueEntityModuleTest":[136376],"UniqueEntityTestSystem":[135886],"World":[23730],"WorldResourceIdInstance":[24272],"WorldResourceIdLib":[24145],"createCoreModule":[46913],"getUniqueEntity":[125423,125442]},"nodeType":"SourceUnit","src":"32:5805:201","nodes":[{"id":135839,"nodeType":"PragmaDirective","src":"32:25:201","nodes":[],"literals":["solidity",">=","0.8",".21"]},{"id":135841,"nodeType":"ImportDirective","src":"59:42:201","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":58813,"symbolAliases":[{"foreign":{"id":135840,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58812,"src":"68:4:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135843,"nodeType":"ImportDirective","src":"102:73:201","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":135842,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135845,"nodeType":"ImportDirective","src":"177:68:201","nodes":[],"absolutePath":"node_modules/@latticexyz/store/src/StoreSwitch.sol","file":"@latticexyz/store/src/StoreSwitch.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":8204,"symbolAliases":[{"foreign":{"id":135844,"name":"StoreSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"186:11:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135847,"nodeType":"ImportDirective","src":"246:56:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":23731,"symbolAliases":[{"foreign":{"id":135846,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23730,"src":"255:5:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135849,"nodeType":"ImportDirective","src":"303:60:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IModule.sol","file":"@latticexyz/world/src/IModule.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":22255,"symbolAliases":[{"foreign":{"id":135848,"name":"IModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22254,"src":"312:7:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135851,"nodeType":"ImportDirective","src":"364:85:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":24401,"symbolAliases":[{"foreign":{"id":135850,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"373:10:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135853,"nodeType":"ImportDirective","src":"450:70:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IWorldErrors.sol","file":"@latticexyz/world/src/IWorldErrors.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":22431,"symbolAliases":[{"foreign":{"id":135852,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"459:12:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135855,"nodeType":"ImportDirective","src":"521:58:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":22602,"symbolAliases":[{"foreign":{"id":135854,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22601,"src":"530:6:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135857,"nodeType":"ImportDirective","src":"580:79:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":135856,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"589:15:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135859,"nodeType":"ImportDirective","src":"661:79:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createCoreModule.sol","file":"@latticexyz/world/test/createCoreModule.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":46914,"symbolAliases":[{"foreign":{"id":135858,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"670:16:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135861,"nodeType":"ImportDirective","src":"741:88:201","nodes":[],"absolutePath":"src/modules/uniqueentity/UniqueEntityModule.sol","file":"../src/modules/uniqueentity/UniqueEntityModule.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":125272,"symbolAliases":[{"foreign":{"id":135860,"name":"UniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125271,"src":"750:18:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135863,"nodeType":"ImportDirective","src":"830:83:201","nodes":[],"absolutePath":"src/modules/uniqueentity/tables/UniqueEntity.sol","file":"../src/modules/uniqueentity/tables/UniqueEntity.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":126271,"symbolAliases":[{"foreign":{"id":135862,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"839:12:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135865,"nodeType":"ImportDirective","src":"914:82:201","nodes":[],"absolutePath":"src/modules/uniqueentity/getUniqueEntity.sol","file":"../src/modules/uniqueentity/getUniqueEntity.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":125443,"symbolAliases":[{"foreign":{"id":135864,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"src":"923:15:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135868,"nodeType":"ImportDirective","src":"998:82:201","nodes":[],"absolutePath":"src/modules/uniqueentity/constants.sol","file":"../src/modules/uniqueentity/constants.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":125388,"symbolAliases":[{"foreign":{"id":135866,"name":"NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125324,"src":"1007:9:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135867,"name":"TABLE_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125342,"src":"1018:10:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135872,"nodeType":"ImportDirective","src":"1081:116:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":24273,"symbolAliases":[{"foreign":{"id":135869,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"1090:10:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135870,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"1102:18:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135871,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24272,"src":"1122:23:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135874,"nodeType":"ImportDirective","src":"1198:78:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":136377,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":135873,"name":"RESOURCE_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"1207:14:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135886,"nodeType":"ContractDefinition","src":"1278:197:201","nodes":[{"id":135885,"nodeType":"FunctionDefinition","src":"1324:149:201","nodes":[],"body":{"id":135884,"nodeType":"Block","src":"1377:96:201","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135881,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125423,"src":"1451:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes32_$","typeString":"function () returns (bytes32)"}},"id":135882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:17:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":135880,"id":135883,"nodeType":"Return","src":"1444:24:201"}]},"functionSelector":"7826d14d","implemented":true,"kind":"function","modifiers":[],"name":"echoUniqueEntity","nameLocation":"1333:16:201","parameters":{"id":135877,"nodeType":"ParameterList","parameters":[],"src":"1349:2:201"},"returnParameters":{"id":135880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135885,"src":"1368:7:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":135878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1367:9:201"},"scope":135886,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":135875,"name":"System","nameLocations":["1313:6:201"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"1313:6:201"},"id":135876,"nodeType":"InheritanceSpecifier","src":"1313:6:201"}],"canonicalName":"UniqueEntityTestSystem","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[135886,22601,23800,22336,22203],"name":"UniqueEntityTestSystem","nameLocation":"1287:22:201","scope":136377,"usedErrors":[22360],"usedEvents":[]},{"id":136376,"nodeType":"ContractDefinition","src":"1477:4359:201","nodes":[{"id":135894,"nodeType":"UsingForDirective","src":"1534:45:201","nodes":[],"global":false,"libraryName":{"id":135891,"name":"WorldResourceIdInstance","nameLocations":["1540:23:201"],"nodeType":"IdentifierPath","referencedDeclaration":24272,"src":"1540:23:201"},"typeName":{"id":135893,"nodeType":"UserDefinedTypeName","pathNode":{"id":135892,"name":"ResourceId","nameLocations":["1568:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1568:10:201"},"referencedDeclaration":2782,"src":"1568:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":135897,"nodeType":"VariableDeclaration","src":"1583:16:201","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1594:5:201","scope":136376,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},"typeName":{"id":135896,"nodeType":"UserDefinedTypeName","pathNode":{"id":135895,"name":"IBaseWorld","nameLocations":["1583:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":24400,"src":"1583:10:201"},"referencedDeclaration":24400,"src":"1583:10:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"visibility":"internal"},{"id":135904,"nodeType":"VariableDeclaration","src":"1603:64:201","nodes":[],"constant":false,"mutability":"mutable","name":"uniqueEntityModule","nameLocation":"1622:18:201","scope":136376,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},"typeName":{"id":135899,"nodeType":"UserDefinedTypeName","pathNode":{"id":135898,"name":"UniqueEntityModule","nameLocations":["1603:18:201"],"nodeType":"IdentifierPath","referencedDeclaration":125271,"src":"1603:18:201"},"referencedDeclaration":125271,"src":"1603:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},"value":{"arguments":[],"expression":{"argumentTypes":[],"id":135902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1643:22:201","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_UniqueEntityModule_$125271_$","typeString":"function () returns (contract UniqueEntityModule)"},"typeName":{"id":135901,"nodeType":"UserDefinedTypeName","pathNode":{"id":135900,"name":"UniqueEntityModule","nameLocations":["1647:18:201"],"nodeType":"IdentifierPath","referencedDeclaration":125271,"src":"1647:18:201"},"referencedDeclaration":125271,"src":"1647:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}}},"id":135903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1643:24:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},"visibility":"internal"},{"id":135913,"nodeType":"VariableDeclaration","src":"1671:115:201","nodes":[],"constant":false,"mutability":"mutable","name":"_tableId","nameLocation":"1682:8:201","scope":136376,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135906,"nodeType":"UserDefinedTypeName","pathNode":{"id":135905,"name":"ResourceId","nameLocations":["1671:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1671:10:201"},"referencedDeclaration":2782,"src":"1671:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"value":{"arguments":[{"id":135909,"name":"RESOURCE_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"1729:14:201","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":135910,"name":"NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125324,"src":"1756:9:201","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"id":135911,"name":"TABLE_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125342,"src":"1773:10:201","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_bytes16","typeString":"bytes16"}],"expression":{"id":135907,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"1693:18:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1712:6:201","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"1693:25:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1721:6:201","1745:9:201","1767:4:201"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"1693:93:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":135945,"nodeType":"FunctionDefinition","src":"1791:166:201","nodes":[],"body":{"id":135944,"nodeType":"Block","src":"1815:142:201","nodes":[],"statements":[{"expression":{"id":135926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135916,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"1821:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1848:9:201","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_World_$23730_$","typeString":"function () returns (contract World)"},"typeName":{"id":135921,"nodeType":"UserDefinedTypeName","pathNode":{"id":135920,"name":"World","nameLocations":["1852:5:201"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"1852:5:201"},"referencedDeclaration":23730,"src":"1852:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}},"id":135923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1848:11:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}],"id":135919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1840:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135918,"name":"address","nodeType":"ElementaryTypeName","src":"1840:7:201","typeDescriptions":{}}},"id":135924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1840:20:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":135917,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"1829:10:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseWorld_$24400_$","typeString":"type(contract IBaseWorld)"}},"id":135925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:32:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"src":"1821:40:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135927,"nodeType":"ExpressionStatement","src":"1821:40:201"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135931,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"1884:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_CoreModule_$35431_$","typeString":"function () returns (contract CoreModule)"}},"id":135932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1884:18:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}],"expression":{"id":135928,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"1867:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1873:10:201","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":22506,"src":"1867:16:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$returns$__$","typeString":"function (contract IModule) external"}},"id":135933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1867:36:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135934,"nodeType":"ExpressionStatement","src":"1867:36:201"},{"expression":{"arguments":[{"arguments":[{"id":135940,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"1945:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1937:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135938,"name":"address","nodeType":"ElementaryTypeName","src":"1937:7:201","typeDescriptions":{}}},"id":135941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135935,"name":"StoreSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"1909:11:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StoreSwitch_$8203_$","typeString":"type(library StoreSwitch)"}},"id":135937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1921:15:201","memberName":"setStoreAddress","nodeType":"MemberAccess","referencedDeclaration":6960,"src":"1909:27:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":135942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:43:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135943,"nodeType":"ExpressionStatement","src":"1909:43:201"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1800:5:201","parameters":{"id":135914,"nodeType":"ParameterList","parameters":[],"src":"1805:2:201"},"returnParameters":{"id":135915,"nodeType":"ParameterList","parameters":[],"src":"1815:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136017,"nodeType":"FunctionDefinition","src":"1961:616:201","nodes":[],"body":{"id":136016,"nodeType":"Block","src":"1991:586:201","nodes":[],"statements":[{"assignments":[135950],"declarations":[{"constant":false,"id":135950,"mutability":"mutable","name":"tableId","nameLocation":"2008:7:201","nodeType":"VariableDeclaration","scope":136016,"src":"1997:18:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135949,"nodeType":"UserDefinedTypeName","pathNode":{"id":135948,"name":"ResourceId","nameLocations":["1997:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1997:10:201"},"referencedDeclaration":2782,"src":"1997:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":135952,"initialValue":{"id":135951,"name":"_tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135913,"src":"2018:8:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"1997:29:201"},{"expression":{"arguments":[{"hexValue":"696e7374616c6c20756e6971756520656e74697479206d6f64756c65","id":135954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2048:30:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_e196242de54818590696493ab4e789102fa0a36c001dc7142a35603c2ec9d730","typeString":"literal_string \"install unique entity module\""},"value":"install unique entity module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e196242de54818590696493ab4e789102fa0a36c001dc7142a35603c2ec9d730","typeString":"literal_string \"install unique entity module\""}],"id":135953,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2033:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2033:46:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135956,"nodeType":"ExpressionStatement","src":"2033:46:201"},{"expression":{"arguments":[{"id":135960,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"2105:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":135963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2135:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2125:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":135961,"name":"bytes","nodeType":"ElementaryTypeName","src":"2129:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":135964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2125:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135957,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"2085:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2091:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"2085:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":135965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2085:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135966,"nodeType":"ExpressionStatement","src":"2085:53:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135967,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2144:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2144:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135969,"nodeType":"ExpressionStatement","src":"2144:14:201"},{"expression":{"arguments":[{"hexValue":"676574206120756e6971756520656e74697479206e6f6e636520286e6f6e2d726f6f74206d6f64756c6529","id":135971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2180:45:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8f1f7b92e3568f5b0f74e4b4e9401129fbc8276d4a6be6f086b21efe325f916","typeString":"literal_string \"get a unique entity nonce (non-root module)\""},"value":"get a unique entity nonce (non-root module)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f8f1f7b92e3568f5b0f74e4b4e9401129fbc8276d4a6be6f086b21efe325f916","typeString":"literal_string \"get a unique entity nonce (non-root module)\""}],"id":135970,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2165:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:61:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135973,"nodeType":"ExpressionStatement","src":"2165:61:201"},{"assignments":[135975],"declarations":[{"constant":false,"id":135975,"mutability":"mutable","name":"uniqueEntity","nameLocation":"2240:12:201","nodeType":"VariableDeclaration","scope":136016,"src":"2232:20:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":135974,"name":"uint256","nodeType":"ElementaryTypeName","src":"2232:7:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":135982,"initialValue":{"arguments":[{"arguments":[{"id":135979,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"2279:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135978,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"2263:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":135980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":135977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2255:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":135976,"name":"uint256","nodeType":"ElementaryTypeName","src":"2255:7:201","typeDescriptions":{}}},"id":135981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2255:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2232:54:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135983,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2292:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2292:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135985,"nodeType":"ExpressionStatement","src":"2292:14:201"},{"expression":{"arguments":[{"arguments":[{"id":135989,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135950,"src":"2382:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135987,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"2365:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":135988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2378:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"2365:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":135990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2365:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":135991,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135975,"src":"2392:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":135986,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"2356:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":135992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2356:49:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135993,"nodeType":"ExpressionStatement","src":"2356:49:201"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":135998,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"2487:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135997,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"2471:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":135999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2471:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":135996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2463:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":135995,"name":"uint256","nodeType":"ElementaryTypeName","src":"2463:7:201","typeDescriptions":{}}},"id":136000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2463:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136001,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135975,"src":"2496:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2511:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2496:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":135994,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"2454:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2454:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136005,"nodeType":"ExpressionStatement","src":"2454:59:201"},{"expression":{"arguments":[{"arguments":[{"id":136009,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135950,"src":"2545:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136007,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"2528:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2541:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"2528:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2528:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136011,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135975,"src":"2555:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2555:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136006,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"2519:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2519:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136015,"nodeType":"ExpressionStatement","src":"2519:53:201"}]},"functionSelector":"786bd7bc","implemented":true,"kind":"function","modifiers":[],"name":"testInstall","nameLocation":"1970:11:201","parameters":{"id":135946,"nodeType":"ParameterList","parameters":[],"src":"1981:2:201"},"returnParameters":{"id":135947,"nodeType":"ParameterList","parameters":[],"src":"1991:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136049,"nodeType":"FunctionDefinition","src":"2581:221:201","nodes":[],"body":{"id":136048,"nodeType":"Block","src":"2616:186:201","nodes":[],"statements":[{"expression":{"arguments":[{"id":136023,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"2642:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2672:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2662:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136024,"name":"bytes","nodeType":"ElementaryTypeName","src":"2666:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2662:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136020,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"2622:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2628:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"2622:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2622:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136029,"nodeType":"ExpressionStatement","src":"2622:53:201"},{"expression":{"arguments":[{"expression":{"expression":{"id":136033,"name":"IModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22254,"src":"2697:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IModule_$22254_$","typeString":"type(contract IModule)"}},"id":136034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2705:23:201","memberName":"Module_AlreadyInstalled","nodeType":"MemberAccess","referencedDeclaration":22231,"src":"2697:31:201","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":136035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2729:8:201","memberName":"selector","nodeType":"MemberAccess","src":"2697:40:201","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":136030,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"2681:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2684:12:201","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59998,"src":"2681:15:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4) external"}},"id":136036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2681:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136037,"nodeType":"ExpressionStatement","src":"2681:57:201"},{"expression":{"arguments":[{"id":136041,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"2764:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2794:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2784:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136042,"name":"bytes","nodeType":"ElementaryTypeName","src":"2788:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2784:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136038,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"2744:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"2744:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2744:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136047,"nodeType":"ExpressionStatement","src":"2744:53:201"}]},"functionSelector":"78cdebf9","implemented":true,"kind":"function","modifiers":[],"name":"testInstallTwice","nameLocation":"2590:16:201","parameters":{"id":136018,"nodeType":"ParameterList","parameters":[],"src":"2606:2:201"},"returnParameters":{"id":136019,"nodeType":"ParameterList","parameters":[],"src":"2616:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136121,"nodeType":"FunctionDefinition","src":"2806:624:201","nodes":[],"body":{"id":136120,"nodeType":"Block","src":"2840:590:201","nodes":[],"statements":[{"assignments":[136054],"declarations":[{"constant":false,"id":136054,"mutability":"mutable","name":"tableId","nameLocation":"2857:7:201","nodeType":"VariableDeclaration","scope":136120,"src":"2846:18:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136053,"nodeType":"UserDefinedTypeName","pathNode":{"id":136052,"name":"ResourceId","nameLocations":["2846:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"2846:10:201"},"referencedDeclaration":2782,"src":"2846:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136056,"initialValue":{"id":136055,"name":"_tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135913,"src":"2867:8:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"2846:29:201"},{"expression":{"arguments":[{"hexValue":"696e7374616c6c526f6f7420756e6971756520656e74697479206d6f64756c65","id":136058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2897:34:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_749e8dec304b56466033726710e32c6a2428a8af2e35470c84f22cc823de8e82","typeString":"literal_string \"installRoot unique entity module\""},"value":"installRoot unique entity module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_749e8dec304b56466033726710e32c6a2428a8af2e35470c84f22cc823de8e82","typeString":"literal_string \"installRoot unique entity module\""}],"id":136057,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2882:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":136059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2882:50:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136060,"nodeType":"ExpressionStatement","src":"2882:50:201"},{"expression":{"arguments":[{"id":136064,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"2962:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2992:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2982:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136065,"name":"bytes","nodeType":"ElementaryTypeName","src":"2986:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136061,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"2938:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2944:17:201","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"2938:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2938:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136070,"nodeType":"ExpressionStatement","src":"2938:57:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":136071,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3001:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":136072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3001:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136073,"nodeType":"ExpressionStatement","src":"3001:14:201"},{"expression":{"arguments":[{"hexValue":"676574206120756e6971756520656e74697479206e6f6e63652028726f6f74206d6f64756c6529","id":136075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3037:41:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_e033e97a444b8e3375c85aa9a358976f6a0c22c74e46bea6d1a2532d684385c0","typeString":"literal_string \"get a unique entity nonce (root module)\""},"value":"get a unique entity nonce (root module)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e033e97a444b8e3375c85aa9a358976f6a0c22c74e46bea6d1a2532d684385c0","typeString":"literal_string \"get a unique entity nonce (root module)\""}],"id":136074,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3022:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":136076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3022:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136077,"nodeType":"ExpressionStatement","src":"3022:57:201"},{"assignments":[136079],"declarations":[{"constant":false,"id":136079,"mutability":"mutable","name":"uniqueEntity","nameLocation":"3093:12:201","nodeType":"VariableDeclaration","scope":136120,"src":"3085:20:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":136078,"name":"uint256","nodeType":"ElementaryTypeName","src":"3085:7:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":136086,"initialValue":{"arguments":[{"arguments":[{"id":136083,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"3132:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136082,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"3116:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3108:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136080,"name":"uint256","nodeType":"ElementaryTypeName","src":"3108:7:201","typeDescriptions":{}}},"id":136085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3108:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3085:54:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":136087,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3145:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":136088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3145:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136089,"nodeType":"ExpressionStatement","src":"3145:14:201"},{"expression":{"arguments":[{"arguments":[{"id":136093,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136054,"src":"3235:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136091,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"3218:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3231:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"3218:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3218:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":136095,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136079,"src":"3245:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136090,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"3209:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3209:49:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136097,"nodeType":"ExpressionStatement","src":"3209:49:201"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":136102,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"3340:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136101,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"3324:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3324:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3316:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136099,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:201","typeDescriptions":{}}},"id":136104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3316:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136105,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136079,"src":"3349:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3364:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3349:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136098,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"3307:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136109,"nodeType":"ExpressionStatement","src":"3307:59:201"},{"expression":{"arguments":[{"arguments":[{"id":136113,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136054,"src":"3398:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136111,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"3381:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3394:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"3381:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3381:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136115,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136079,"src":"3408:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3423:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3408:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136110,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"3372:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3372:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136119,"nodeType":"ExpressionStatement","src":"3372:53:201"}]},"functionSelector":"5ecdf433","implemented":true,"kind":"function","modifiers":[],"name":"testInstallRoot","nameLocation":"2815:15:201","parameters":{"id":136050,"nodeType":"ParameterList","parameters":[],"src":"2830:2:201"},"returnParameters":{"id":136051,"nodeType":"ParameterList","parameters":[],"src":"2840:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136153,"nodeType":"FunctionDefinition","src":"3434:233:201","nodes":[],"body":{"id":136152,"nodeType":"Block","src":"3473:194:201","nodes":[],"statements":[{"expression":{"arguments":[{"id":136127,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"3503:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3533:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3523:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136128,"name":"bytes","nodeType":"ElementaryTypeName","src":"3527:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3523:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136124,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"3479:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3485:17:201","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"3479:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3479:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136133,"nodeType":"ExpressionStatement","src":"3479:57:201"},{"expression":{"arguments":[{"expression":{"expression":{"id":136137,"name":"IModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22254,"src":"3558:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IModule_$22254_$","typeString":"type(contract IModule)"}},"id":136138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3566:23:201","memberName":"Module_AlreadyInstalled","nodeType":"MemberAccess","referencedDeclaration":22231,"src":"3558:31:201","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":136139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3590:8:201","memberName":"selector","nodeType":"MemberAccess","src":"3558:40:201","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":136134,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3542:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3545:12:201","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59998,"src":"3542:15:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4) external"}},"id":136140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3542:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136141,"nodeType":"ExpressionStatement","src":"3542:57:201"},{"expression":{"arguments":[{"id":136145,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"3629:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3659:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3649:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136146,"name":"bytes","nodeType":"ElementaryTypeName","src":"3653:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3649:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136142,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"3605:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3611:17:201","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"3605:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3605:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136151,"nodeType":"ExpressionStatement","src":"3605:57:201"}]},"functionSelector":"974884d5","implemented":true,"kind":"function","modifiers":[],"name":"testInstallRootTwice","nameLocation":"3443:20:201","parameters":{"id":136122,"nodeType":"ParameterList","parameters":[],"src":"3463:2:201"},"returnParameters":{"id":136123,"nodeType":"ParameterList","parameters":[],"src":"3473:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136257,"nodeType":"FunctionDefinition","src":"3671:942:201","nodes":[],"body":{"id":136256,"nodeType":"Block","src":"3706:907:201","nodes":[],"statements":[{"assignments":[136158],"declarations":[{"constant":false,"id":136158,"mutability":"mutable","name":"tableId","nameLocation":"3723:7:201","nodeType":"VariableDeclaration","scope":136256,"src":"3712:18:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136157,"nodeType":"UserDefinedTypeName","pathNode":{"id":136156,"name":"ResourceId","nameLocations":["3712:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"3712:10:201"},"referencedDeclaration":2782,"src":"3712:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136160,"initialValue":{"id":136159,"name":"_tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135913,"src":"3733:8:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"3712:29:201"},{"expression":{"arguments":[{"id":136164,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"3768:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3798:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3788:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136165,"name":"bytes","nodeType":"ElementaryTypeName","src":"3792:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3788:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136161,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"3748:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3754:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"3748:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3748:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136170,"nodeType":"ExpressionStatement","src":"3748:53:201"},{"assignments":[136172],"declarations":[{"constant":false,"id":136172,"mutability":"mutable","name":"alice","nameLocation":"3871:5:201","nodeType":"VariableDeclaration","scope":136256,"src":"3863:13:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136171,"name":"address","nodeType":"ElementaryTypeName","src":"3863:7:201","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":136182,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"616c696365","id":136178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3905:7:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c0257114eb9399a2985f8e75dad7600c5d89fe3824ffa99ec1c3eb8bf3b0501","typeString":"literal_string \"alice\""},"value":"alice"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9c0257114eb9399a2985f8e75dad7600c5d89fe3824ffa99ec1c3eb8bf3b0501","typeString":"literal_string \"alice\""}],"id":136177,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3895:9:201","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":136179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3895:18:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3887:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":136175,"name":"bytes20","nodeType":"ElementaryTypeName","src":"3887:7:201","typeDescriptions":{}}},"id":136180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3887:27:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":136174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3879:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":136173,"name":"address","nodeType":"ElementaryTypeName","src":"3879:7:201","typeDescriptions":{}}},"id":136181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3879:36:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3863:52:201"},{"expression":{"arguments":[{"id":136186,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136172,"src":"3935:5:201","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136183,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3921:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3924:10:201","memberName":"startPrank","nodeType":"MemberAccess","referencedDeclaration":59942,"src":"3921:13:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3921:20:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136188,"nodeType":"ExpressionStatement","src":"3921:20:201"},{"assignments":[136190],"declarations":[{"constant":false,"id":136190,"mutability":"mutable","name":"uniqueEntity","nameLocation":"3955:12:201","nodeType":"VariableDeclaration","scope":136256,"src":"3947:20:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":136189,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":136197,"initialValue":{"arguments":[{"arguments":[{"id":136194,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"3994:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136193,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"3978:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3970:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136191,"name":"uint256","nodeType":"ElementaryTypeName","src":"3970:7:201","typeDescriptions":{}}},"id":136196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3947:54:201"},{"expression":{"arguments":[{"arguments":[{"id":136201,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136158,"src":"4077:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136199,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"4060:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4073:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"4060:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":136203,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136190,"src":"4087:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136198,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"4051:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4051:49:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136205,"nodeType":"ExpressionStatement","src":"4051:49:201"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":136210,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"4182:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136209,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"4166:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4166:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4158:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136207,"name":"uint256","nodeType":"ElementaryTypeName","src":"4158:7:201","typeDescriptions":{}}},"id":136212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4158:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136213,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136190,"src":"4191:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4206:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4191:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136206,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"4149:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136217,"nodeType":"ExpressionStatement","src":"4149:59:201"},{"expression":{"arguments":[{"arguments":[{"id":136221,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136158,"src":"4240:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136219,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"4223:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4236:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"4223:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136223,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136190,"src":"4250:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4265:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4250:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136218,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"4214:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136227,"nodeType":"ExpressionStatement","src":"4214:53:201"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":136233,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"4382:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":136234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4395:18:201","memberName":"World_AccessDenied","nodeType":"MemberAccess","referencedDeclaration":22367,"src":"4382:31:201","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":136235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4414:8:201","memberName":"selector","nodeType":"MemberAccess","src":"4382:40:201","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":136238,"name":"RESOURCE_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"4468:14:201","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":136239,"name":"NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125324,"src":"4495:9:201","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"id":136240,"name":"TABLE_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125342,"src":"4512:10:201","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_bytes16","typeString":"bytes16"}],"expression":{"id":136236,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"4432:18:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":136237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4451:6:201","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"4432:25:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":136241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["4460:6:201","4484:9:201","4506:4:201"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"4432:93:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":136242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4526:8:201","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":24271,"src":"4432:102:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (string memory)"}},"id":136243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4432:104:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":136244,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136172,"src":"4546:5:201","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136231,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4350:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4354:18:201","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4350:22:201","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":136245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4350:209:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136228,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4327:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4330:12:201","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"4327:15:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":136246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4327:238:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136247,"nodeType":"ExpressionStatement","src":"4327:238:201"},{"expression":{"arguments":[{"id":136251,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"4588:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},{"id":136252,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136158,"src":"4595:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"313233","id":136253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:3:201","typeDescriptions":{"typeIdentifier":"t_rational_123_by_1","typeString":"int_const 123"},"value":"123"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_rational_123_by_1","typeString":"int_const 123"}],"expression":{"id":136248,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"4571:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4584:3:201","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":126120,"src":"4571:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStore_$1349_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function (contract IStore,ResourceId,uint256)"}},"id":136254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4571:37:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136255,"nodeType":"ExpressionStatement","src":"4571:37:201"}]},"functionSelector":"4f956662","implemented":true,"kind":"function","modifiers":[],"name":"testPublicAccess","nameLocation":"3680:16:201","parameters":{"id":136154,"nodeType":"ParameterList","parameters":[],"src":"3696:2:201"},"returnParameters":{"id":136155,"nodeType":"ParameterList","parameters":[],"src":"3706:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136375,"nodeType":"FunctionDefinition","src":"4617:1217:201","nodes":[],"body":{"id":136374,"nodeType":"Block","src":"4660:1174:201","nodes":[],"statements":[{"expression":{"arguments":[{"id":136263,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135904,"src":"4686:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4716:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4706:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136264,"name":"bytes","nodeType":"ElementaryTypeName","src":"4710:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4706:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136260,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"4666:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4672:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"4666:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4666:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136269,"nodeType":"ExpressionStatement","src":"4666:53:201"},{"assignments":[136272],"declarations":[{"constant":false,"id":136272,"mutability":"mutable","name":"uniqueEntityTestSystem","nameLocation":"4829:22:201","nodeType":"VariableDeclaration","scope":136374,"src":"4806:45:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135886","typeString":"contract UniqueEntityTestSystem"},"typeName":{"id":136271,"nodeType":"UserDefinedTypeName","pathNode":{"id":136270,"name":"UniqueEntityTestSystem","nameLocations":["4806:22:201"],"nodeType":"IdentifierPath","referencedDeclaration":135886,"src":"4806:22:201"},"referencedDeclaration":135886,"src":"4806:22:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135886","typeString":"contract UniqueEntityTestSystem"}},"visibility":"internal"}],"id":136277,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":136275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4854:26:201","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_UniqueEntityTestSystem_$135886_$","typeString":"function () returns (contract UniqueEntityTestSystem)"},"typeName":{"id":136274,"nodeType":"UserDefinedTypeName","pathNode":{"id":136273,"name":"UniqueEntityTestSystem","nameLocations":["4858:22:201"],"nodeType":"IdentifierPath","referencedDeclaration":135886,"src":"4858:22:201"},"referencedDeclaration":135886,"src":"4858:22:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135886","typeString":"contract UniqueEntityTestSystem"}}},"id":136276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4854:28:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135886","typeString":"contract UniqueEntityTestSystem"}},"nodeType":"VariableDeclarationStatement","src":"4806:76:201"},{"assignments":[136280],"declarations":[{"constant":false,"id":136280,"mutability":"mutable","name":"uniqueEntityTestSystemId","nameLocation":"4899:24:201","nodeType":"VariableDeclaration","scope":136374,"src":"4888:35:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136279,"nodeType":"UserDefinedTypeName","pathNode":{"id":136278,"name":"ResourceId","nameLocations":["4888:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"4888:10:201"},"referencedDeclaration":2782,"src":"4888:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136287,"initialValue":{"arguments":[{"id":136283,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"4968:15:201","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"736f6d656e73","id":136284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5002:8:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f0ad60a4f4a65b4b1c116d4df4776fffa33077c5e90150a7a3c822c1eb40de6","typeString":"literal_string \"somens\""},"value":"somens"},{"hexValue":"6563686f556e69717565456e74697479","id":136285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5024:18:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_595cba5576af5f9da3ddebe24b99ecd28db756430456807bdc5068edc6679d9a","typeString":"literal_string \"echoUniqueEntity\""},"value":"echoUniqueEntity"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_4f0ad60a4f4a65b4b1c116d4df4776fffa33077c5e90150a7a3c822c1eb40de6","typeString":"literal_string \"somens\""},{"typeIdentifier":"t_stringliteral_595cba5576af5f9da3ddebe24b99ecd28db756430456807bdc5068edc6679d9a","typeString":"literal_string \"echoUniqueEntity\""}],"expression":{"id":136281,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"4926:18:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":136282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4945:6:201","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"4926:25:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":136286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["4960:6:201","4991:9:201","5018:4:201"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"4926:123:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"4888:161:201"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":136291,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136280,"src":"5079:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":136292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5104:14:201","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"5079:39:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":136293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5079:41:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136288,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"5055:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5061:17:201","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"5055:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":136294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5055:66:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136295,"nodeType":"ExpressionStatement","src":"5055:66:201"},{"expression":{"arguments":[{"id":136299,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136280,"src":"5148:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":136300,"name":"uniqueEntityTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136272,"src":"5174:22:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135886","typeString":"contract UniqueEntityTestSystem"}},{"hexValue":"74727565","id":136301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5198:4:201","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135886","typeString":"contract UniqueEntityTestSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":136296,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"5127:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5133:14:201","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"5127:20:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":136302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5127:76:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136303,"nodeType":"ExpressionStatement","src":"5127:76:201"},{"assignments":[136305],"declarations":[{"constant":false,"id":136305,"mutability":"mutable","name":"uniqueEntity1","nameLocation":"5279:13:201","nodeType":"VariableDeclaration","scope":136374,"src":"5271:21:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5271:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":136322,"initialValue":{"arguments":[{"arguments":[{"id":136310,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136280,"src":"5324:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136313,"name":"UniqueEntityTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135886,"src":"5365:22:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntityTestSystem_$135886_$","typeString":"type(contract UniqueEntityTestSystem)"}},"id":136314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5388:16:201","memberName":"echoUniqueEntity","nodeType":"MemberAccess","referencedDeclaration":135885,"src":"5365:39:201","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"}},{"components":[],"id":136315,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5406:2:201","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136311,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5350:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5354:10:201","memberName":"encodeCall","nodeType":"MemberAccess","src":"5350:14:201","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5350:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136308,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"5313:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5319:4:201","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"5313:10:201","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:97:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":136319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5419:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":136318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5419:7:201","typeDescriptions":{}}}],"id":136320,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5418:9:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":136306,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5295:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5299:6:201","memberName":"decode","nodeType":"MemberAccess","src":"5295:10:201","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":136321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5295:138:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5271:162:201"},{"assignments":[136324],"declarations":[{"constant":false,"id":136324,"mutability":"mutable","name":"uniqueEntity2","nameLocation":"5447:13:201","nodeType":"VariableDeclaration","scope":136374,"src":"5439:21:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5439:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":136341,"initialValue":{"arguments":[{"arguments":[{"id":136329,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136280,"src":"5492:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136332,"name":"UniqueEntityTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135886,"src":"5533:22:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntityTestSystem_$135886_$","typeString":"type(contract UniqueEntityTestSystem)"}},"id":136333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5556:16:201","memberName":"echoUniqueEntity","nodeType":"MemberAccess","referencedDeclaration":135885,"src":"5533:39:201","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"}},{"components":[],"id":136334,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5574:2:201","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136330,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5518:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5522:10:201","memberName":"encodeCall","nodeType":"MemberAccess","src":"5518:14:201","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5518:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136327,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"5481:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5487:4:201","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"5481:10:201","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:97:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":136338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5587:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":136337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5587:7:201","typeDescriptions":{}}}],"id":136339,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5586:9:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":136325,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5463:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5467:6:201","memberName":"decode","nodeType":"MemberAccess","src":"5463:10:201","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":136340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5463:138:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5439:162:201"},{"assignments":[136343],"declarations":[{"constant":false,"id":136343,"mutability":"mutable","name":"uniqueEntity3","nameLocation":"5615:13:201","nodeType":"VariableDeclaration","scope":136374,"src":"5607:21:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5607:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":136347,"initialValue":{"arguments":[{"id":136345,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135897,"src":"5647:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136344,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"5631:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5631:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5607:46:201"},{"expression":{"arguments":[{"arguments":[{"id":136351,"name":"uniqueEntity2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136324,"src":"5720:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5712:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136349,"name":"uint256","nodeType":"ElementaryTypeName","src":"5712:7:201","typeDescriptions":{}}},"id":136352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5712:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":136355,"name":"uniqueEntity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136305,"src":"5744:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5736:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136353,"name":"uint256","nodeType":"ElementaryTypeName","src":"5736:7:201","typeDescriptions":{}}},"id":136356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5736:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5761:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5736:26:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136348,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"5703:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5703:60:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136360,"nodeType":"ExpressionStatement","src":"5703:60:201"},{"expression":{"arguments":[{"arguments":[{"id":136364,"name":"uniqueEntity3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136343,"src":"5786:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5778:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136362,"name":"uint256","nodeType":"ElementaryTypeName","src":"5778:7:201","typeDescriptions":{}}},"id":136365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5778:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":136368,"name":"uniqueEntity2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136324,"src":"5810:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5802:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136366,"name":"uint256","nodeType":"ElementaryTypeName","src":"5802:7:201","typeDescriptions":{}}},"id":136369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5802:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5827:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5802:26:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136361,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"5769:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5769:60:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136373,"nodeType":"ExpressionStatement","src":"5769:60:201"}]},"functionSelector":"8a5fc888","implemented":true,"kind":"function","modifiers":[],"name":"testAccessInWorldContext","nameLocation":"4626:24:201","parameters":{"id":136258,"nodeType":"ParameterList","parameters":[],"src":"4650:2:201"},"returnParameters":{"id":136259,"nodeType":"ParameterList","parameters":[],"src":"4660:0:201"},"scope":136376,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":135887,"name":"Test","nameLocations":["1512:4:201"],"nodeType":"IdentifierPath","referencedDeclaration":58812,"src":"1512:4:201"},"id":135888,"nodeType":"InheritanceSpecifier","src":"1512:4:201"},{"baseName":{"id":135889,"name":"GasReporter","nameLocations":["1518:11:201"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1518:11:201"},"id":135890,"nodeType":"InheritanceSpecifier","src":"1518:11:201"}],"canonicalName":"UniqueEntityModuleTest","contractDependencies":[23730,35431,35451,35650,35830,36019,125271,135886],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[136376,226,58812,49271,49268,58761,54499,54209,53445,51391,50698,49205],"name":"UniqueEntityModuleTest","nameLocation":"1486:22:201","scope":136377,"usedErrors":[],"usedEvents":[46919,46923,46927,46931,46935,46939,46943,46947,46953,46959,46967,46975,46981,46987,46993,46999,49293,49298,49303,49310,49317,49324]}],"license":"MIT"},"id":201}
1
+ {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAccessInWorldContext","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstall","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallRoot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallRootTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPublicAccess","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556040516200003390620000f6565b604051809103906000f08015801562000050573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556200009a613a3160f11b6b756e69717565456e7469747960a01b647461626c6560d81b620000b1565b602155348015620000aa57600080fd5b506200012c565b6000620000c16070601062000104565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b613f6d8062017c9883390190565b808201808211156200012657634e487b7160e01b600052601160045260246000fd5b92915050565b62017b5b806200013d6000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c806378cdebf911620000c0578063974884d5116200008b578063ba414fa6116200006e578063ba414fa614620001fb578063e20c9f711462000216578063fa7626d4146200022057600080fd5b8063974884d514620001e7578063b5508aa914620001f157600080fd5b806378cdebf914620001b057806385226c8114620001ba5780638a5fc88814620001d3578063916a17c614620001dd57600080fd5b80634f95666211620001015780634f95666214620001795780635ecdf433146200018357806366d9a9a0146200018d578063786bd7bc14620001a657600080fd5b80630a9254e414620001375780631ed7831c14620001435780633e5e3c2314620001655780633f7286f4146200016f575b600080fd5b620001416200022e565b005b6200014d62000375565b6040516200015c919062002859565b60405180910390f35b6200014d620003d9565b6200014d6200043b565b620001416200049d565b62000141620007ae565b6200019762000915565b6040516200015c9190620028a8565b6200014162000a1d565b6200014162000b07565b620001c462000cbd565b6040516200015c9190620029cb565b6200014162000d97565b6200019762001245565b6200014162001344565b620001c462001497565b6200020562001571565b60405190151581526020016200015c565b6200014d620016bd565b600054620002059060ff1681565b6040516200023c90620027f7565b604051809103906000f08015801562000259573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de8620002a06200171f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002fa57600080fd5b505af11580156200030f573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550620003739050565b565b6060600d805480602002602001604051908101604052809291908181526020018280548015620003cf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620003b0575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b602154601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da92620004e69291909116906024810162002a47565b600060405180830381600087803b1580156200050157600080fd5b505af115801562000516573d6000803e3d6000fd5b50506040517f06447d56000000000000000000000000000000000000000000000000000000008152739c0257114eb9399a2985f8e75dad7600c5d89fe3600482018190529250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d5690602401600060405180830381600087803b1580156200059757600080fd5b505af1158015620005ac573d6000803e3d6000fd5b5050601f5460009250620005ca91506001600160a01b03166200182a565b9050620005e2620005db8462001899565b82620018e0565b601f546200061190620005fe906001600160a01b03166200182a565b6200060b83600162002a81565b620018e0565b62000620620005fe8462001899565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fd787b73700000000000000000000000000000000000000000000000000000000620006d2620006cc7f74620000000000000000000000000000000000000000000000000000000000007f756e69717565456e7469747900000000000000000000000000000000000000007f7461626c6500000000000000000000000000000000000000000000000000000062001a4c565b62001ac6565b85604051602401620006e692919062002a97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200075a9160040162002ac4565b600060405180830381600087803b1580156200077557600080fd5b505af11580156200078a573d6000803e3d6000fd5b5050601f54620007a992506001600160a01b0316905084607b62001c00565b505050565b6021546040805180820190915260208082527f696e7374616c6c526f6f7420756e6971756520656e74697479206d6f64756c6590820152620007f09062001ccb565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e926200084f9291909116906024810162002a47565b600060405180830381600087803b1580156200086a57600080fd5b505af11580156200087f573d6000803e3d6000fd5b505050506200088d62001f9f565b620008b160405180606001604052806027815260200162017afd6027913962001ccb565b601f54600090620008cb906001600160a01b03166200182a565b9050620008d762001f9f565b620008e6620005db8362001899565b601f546200090290620005fe906001600160a01b03166200182a565b62000911620005fe8362001899565b5050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620009fb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009a75790505b5050505050815250508152602001906001019062000939565b50505050905090565b60215460408051808201909152601c81527f696e7374616c6c20756e6971756520656e74697479206d6f64756c6500000000602082015262000a5f9062001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000aa59291909116906024810162002a47565b600060405180830381600087803b15801562000ac057600080fd5b505af115801562000ad5573d6000803e3d6000fd5b5050505062000ae362001f9f565b620008b16040518060600160405280602b815260200162017b24602b913962001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000b4d9291909116906024810162002a47565b600060405180830381600087803b15801562000b6857600080fd5b505af115801562000b7d573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562000c0757600080fd5b505af115801562000c1c573d6000803e3d6000fd5b5050601f546020546001600160a01b039182169350638da798da92501660005b6040519080825280601f01601f19166020018201604052801562000c67576020820181803683370190505b506040518363ffffffff1660e01b815260040162000c8792919062002a47565b600060405180830381600087803b15801562000ca257600080fd5b505af115801562000cb7573d6000803e3d6000fd5b50505050565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000a1457838290600052602060002001805462000d039062002ae0565b80601f016020809104026020016040519081016040528092919081815260200182805462000d319062002ae0565b801562000d825780601f1062000d565761010080835404028352916020019162000d82565b820191906000526020600020905b81548152906001019060200180831162000d6457829003601f168201915b50505050508152602001906001019062000ce1565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000ddd9291909116906024810162002a47565b600060405180830381600087803b15801562000df857600080fd5b505af115801562000e0d573d6000803e3d6000fd5b50505050600060405162000e219062002805565b604051809103906000f08015801562000e3e573d6000803e3d6000fd5b509050600062000eb07f73790000000000000000000000000000000000000000000000000000000000007f736f6d656e7300000000000000000000000000000000000000000000000000007f6563686f556e69717565456e746974790000000000000000000000000000000062001a4c565b601f546040517fb29e40890000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffff0000000000000000000000000000000083167f6e730000000000000000000000000000000000000000000000000000000000001760048201529192506001600160a01b03169063b29e408990602401600060405180830381600087803b15801562000f5257600080fd5b505af115801562000f67573d6000803e3d6000fd5b5050601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038681166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000fda57600080fd5b505af115801562000fef573d6000803e3d6000fd5b5050601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af08000000000000000000000000000000000000000000000000000000008152600095506001600160a01b039093169350633ae7af089262001096928792910162002b1c565b6000604051808303816000875af1158015620010b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010e0919081019062002bb4565b806020019051810190620010f5919062002c02565b601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af080000000000000000000000000000000000000000000000000000000081529394506000936001600160a01b0390931692633ae7af08926200119c92889290910162002b1c565b6000604051808303816000875af1158015620011bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011e6919081019062002bb4565b806020019051810190620011fb919062002c02565b601f5490915060009062001218906001600160a01b03166200182a565b90506200122c826200060b85600162002a81565b6200123e816200060b84600162002a81565b5050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200132b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012d75790505b5050505050815250508152602001906001019062001269565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e92620013a39291909116906024810162002a47565b600060405180830381600087803b158015620013be57600080fd5b505af1158015620013d3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200145d57600080fd5b505af115801562001472573d6000803e3d6000fd5b5050601f546020546001600160a01b03918216935063af068c9e925016600062000c3c565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000a14578382906000526020600020018054620014dd9062002ae0565b80601f01602080910402602001604051908101604052809291908181526020018280546200150b9062002ae0565b80156200155c5780601f1062001530576101008083540402835291602001916200155c565b820191906000526020600020905b8154815290600101906020018083116200153e57829003601f168201915b505050505081526020019060010190620014bb565b60008054610100900460ff1615620015925750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016b85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200163a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002c1c565b60408051601f1981840301815290829052620016569162002c66565b6000604051808303816000865af19150503d806000811462001695576040519150601f19603f3d011682016040523d82523d6000602084013e6200169a565b606091505b5091505080806020019051810190620016b4919062002c84565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b60006040516200172f9062002813565b604051809103906000f0801580156200174c573d6000803e3d6000fd5b506040516200175b9062002821565b604051809103906000f08015801562001778573d6000803e3d6000fd5b5060405162001787906200282f565b604051809103906000f080158015620017a4573d6000803e3d6000fd5b50604051620017b3906200283d565b604051809103906000f080158015620017d0573d6000803e3d6000fd5b50604051620017df906200284b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001824573d6000803e3d6000fd5b50905090565b6000816001600160a01b0316638459353e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200186d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001893919062002c02565b92915050565b604080516000808252602082019092526000620018d88483837e200100200000000000000000000000000000000000000000000000000000006200222f565b949350505050565b80821462000911577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200196e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a162000911620022f7565b600062001a5c6070601062002a81565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16176fffffffffffffffffffffffffffffffff19841690911c1790509392505050565b606081601081901b600062001adb836200243e565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161562001b3a5762001b347fffffffffffffffffffffffffffff000000000000000000000000000000000000841662002457565b62001b71565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff1983161562001b9c5762001b968362002457565b62001bd3565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200162001be79392919062002ca8565b6040516020818303038152906040529350505050919050565b60408051600080825260208201835281830184905282518083038401815260608301938490527f390baae00000000000000000000000000000000000000000000000000000000090935290916001600160a01b0386169163390baae09162001c919187918691907e200100200000000000000000000000000000000000000000000000000000006064840162002d77565b600060405180830381600087803b15801562001cac57600080fd5b505af115801562001cc1573d6000803e3d6000fd5b5050505050505050565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562001d6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d93919062002c84565b62001d9b5750565b601b805462001daa9062002ae0565b9050600014601b60405160200162001dc3919062002e5b565b6040516020818303038152906040529062001e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b60405180910390fd5b50601d8160405162001e29919062002c66565b9081526020016040518091039020546000148160405160200162001e4e919062002ee2565b6040516020818303038152906040529062001e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b50601b62001ea7828262002fa2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f0757600080fd5b505af115801562001f1c573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562001f8a57600080fd5b505af11580156200123e573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206d919062002c84565b620020755750565b600060a082601c546200208991906200306f565b6200209591906200306f565b620020a290600162002a81565b90506000811162002110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162001e0d565b80601d601b60405162002124919062003085565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002173601b8262003093565b5062002211601b8054620021879062002ae0565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b59062002ae0565b8015620022065780601f10620021da5761010080835404028352916020019162002206565b820191906000526020600020905b815481529060010190602001808311620021e857829003601f168201915b5050505050620024ed565b604080516020810190915260008152601b90620007a9908262002fa2565b6000806200223c620025f3565b9050306001600160a01b0382160362002266576200225d868686866200262e565b915050620018d8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990620022b390899089908990899060040162003175565b602060405180830381865afa158015620022d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200225d919062002c02565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620024105760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620023ab929160200162002c1c565b60408051601f1981840301815290829052620023c79162002c66565b6000604051808303816000865af19150503d806000811462002406576040519150601f19603f3d011682016040523d82523d6000602084013e6200240b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60006200244e6070601062002a81565b9190911b919050565b606060005b6010811015620024bc576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615620024bc5780620024b381620031a6565b9150506200245c565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280620018d8565b620025f07f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002535919062002c66565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1682526200257f9160040190815260200190565b600060405180830381865afa1580156200259d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025c7919081019062002bb4565b82604051602001620025db929190620031c3565b6040516020818303038152906040526200266a565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620016b8573391505090565b600062002661620026408686620026df565b60ff858116601b0360080285901c166200265b858762002737565b62002780565b95945050505050565b620025f08160405160240162002681919062002ac4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620027d6565b60008282604051602001620026f692919062003248565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562002778576200276160ff601b83900360080287901c168362002a81565b9150806200276f81620031a6565b9150506200273c565b509392505050565b600060208210620027aa57602082048401935060208281620027a657620027a662003285565b0691505b508254600882021b60208290038084111562002778576001850154600882021c82179150509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200329c83390190565b6111e480620087d683390190565b611a7980620099ba83390190565b6118cc806200b43383390190565b610b15806200ccff83390190565b61567c806200d81483390190565b614c6d8062012e9083390190565b6020808252825182820181905260009190848201906040850190845b818110156200289c5783516001600160a01b03168352928401929184019160010162002875565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620029525783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200290e565b50978a01979550505091870191600101620028d0565b50919998505050505050505050565b60005b83811015620029945781810151838201526020016200297a565b50506000910152565b60008151808452620029b781602086016020860162002977565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002a2457603f1988860301845262002a118583516200299d565b94509285019290850190600101620029f2565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0383168152604060208201526000620018d860408301846200299d565b634e487b7160e01b600052601160045260246000fd5b8082018082111562001893576200189362002a6b565b60408152600062002aac60408301856200299d565b90506001600160a01b03831660208301529392505050565b60208152600062002ad960208301846200299d565b9392505050565b600181811c9082168062002af557607f821691505b60208210810362002b1657634e487b7160e01b600052602260045260246000fd5b50919050565b828152604060208201526000620018d860408301846200299d565b600067ffffffffffffffff8084111562002b555762002b5562002a31565b604051601f8501601f19908116603f0116810190828211818310171562002b805762002b8062002a31565b8160405280935085815286868601111562002b9a57600080fd5b62002baa86602083018762002977565b5050509392505050565b60006020828403121562002bc757600080fd5b815167ffffffffffffffff81111562002bdf57600080fd5b8201601f8101841362002bf157600080fd5b620018d88482516020840162002b37565b60006020828403121562002c1557600080fd5b5051919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002c5881600485016020870162002977565b919091016004019392505050565b6000825162002c7a81846020870162002977565b9190910192915050565b60006020828403121562002c9757600080fd5b8151801515811462002ad957600080fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845162002d0b81600386016020890162002977565b80840190508160038201528451915062002d2d82600483016020880162002977565b0160040195945050505050565b600081518084526020808501945080840160005b8381101562002d6c5781518752958201959082019060010162002d4e565b509495945050505050565b85815260a06020820152600062002d9260a083018762002d3a565b60ff86166040840152828103606084015262002daf81866200299d565b9150508260808301529695505050505050565b6000815462002dd18162002ae0565b6001828116801562002dec576001811462002e205762002e51565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416875282151583028701945062002e51565b8560005260208060002060005b8581101562002e485781548a82015290840190820162002e2d565b50505082870194505b5050505092915050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600062002e8f600c83018462002dc2565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000825162002f1c81600c85016020870162002977565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620007a957600081815260208120601f850160051c8101602086101562002f795750805b601f850160051c820191505b8181101562002f9a5782815560010162002f85565b505050505050565b815167ffffffffffffffff81111562002fbf5762002fbf62002a31565b62002fd78162002fd0845462002ae0565b8462002f50565b602080601f8311600181146200300f576000841562002ff65750858301515b600019600386901b1c1916600185901b17855562002f9a565b600085815260208120601f198616915b8281101562003040578886015182559484019460019091019084016200301f565b50858210156200305f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111562001893576200189362002a6b565b600062002ad9828462002dc2565b8181036200309f575050565b620030ab825462002ae0565b67ffffffffffffffff811115620030c657620030c662002a31565b620030d78162002fd0845462002ae0565b6000601f8211600181146200310e5760008315620030f55750848201545b600019600385901b1c1916600184901b1784556200123e565b600085815260209020601f19841690600086815260209020845b838110156200314a578286015482556001958601959091019060200162003128565b50858310156200305f5793015460001960f8600387901b161c19169092555050600190811b01905550565b84815260806020820152600062003190608083018662002d3a565b60ff949094166040830152506060015292915050565b60006000198203620031bc57620031bc62002a6b565b5060010190565b7f474153205245504f52543a200000000000000000000000000000000000000000815260008351620031fd81600c85016020880162002977565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200323c81600d84016020880162002977565b01600d01949350505050565b82815260006020808301845182860160005b8281101562003278578151845292840192908401906001016200325a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b506111c4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c15780637826d14d146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610d46565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c610198565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896101a2565b905090565b60006101896101d4565b60006101896102d9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101d15750335b90565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f73797374656d000000000000000000000000000000000000000000000000000060308201526000916102c6910160405160208183030381529060405261026a90610d88565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f490923cd00000000000000000000000000000000000000000000000000000000179052610325565b8060200190518101906101899190610daf565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610320573391505090565b919050565b60606000610331610198565b905073ffffffffffffffffffffffffffffffffffffffff811630036103f457600061035b85610497565b50905073ffffffffffffffffffffffffffffffffffffffff81166103c05784610383866105c2565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103b7929190610e18565b60405180910390fd5b60006103da6103cd6101a2565b36601f19013584886106ff565b94509050806103ec576103ec84610780565b505050610179565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906104489087908790600401610e18565b6000604051808303816000875af1158015610467573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048f9190810190610ecf565b949350505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106104d1576104d1610f04565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061059d9061057790610d88565b857e15020014010000000000000000000000000000000000000000000000000000610788565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b606081601081901b60006105d583610872565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106305761062b7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610889565b610667565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561069d5761069883610889565b6106d4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016106e693929190610f1a565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610725848888610935565b6040516107329190610fa8565b600060405180830381855af49150503d806000811461076d576040519150601f19603f3d011682016040523d82523d6000602084013e610772565b606091505b509097909650945050505050565b805160208201fd5b60606000606060006107986102d9565b90503073ffffffffffffffffffffffffffffffffffffffff8216036107ce576107c2878787610965565b93509350935050610869565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd90610824908a908a908a90600401610fc4565b600060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c2919081019061101b565b93509350939050565b60006108806070601061109e565b9190911b919050565b606060005b60108110156108f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156108f857806108f0816110b1565b91505061088e565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000094909416602085015280516030909401905282525090565b606083838360405160200161094c939291906110cb565b60405160208183030381529060405290505b9392505050565b606060006060600061097685610a6d565b9050610983878783610a90565b9350600061099086610ad2565b90508015610a62576109a28888610b0f565b935066ffffffffffffff841667ffffffffffffffff8111156109c6576109c6610e31565b6040519080825280601f01601f1916602001820160405280156109f0576020820181803683370190505b5092506020830160005b828160ff161015610a5f576000610a128b8b84610b22565b90506000610a2f888460ff166028026038011c64ffffffffff1690565b9050610a3e8260008387610ba2565b610a48818561109e565b935050508080610a579061111d565b9150506109fa565b50505b505093509350939050565b60006008610a7d6002602061113c565b610a87919061114f565b9190911c919050565b606081600003610aaf575060408051602081019091526000815261095e565b6000610abb8585610c6f565b9050610ac981600085610cc5565b95945050505050565b60006008600180610ae56002602061113c565b610aef919061113c565b610af9919061113c565b610b03919061114f565b8260ff911c1692915050565b600061095e610b1e8484610cf0565b5490565b60008383604051602001610b37929190611166565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610c2b5760208310610bcc57602083048401935060208381610bc857610bc86111a1565b0692505b8215610c2b576020839003600081841015610bf05750600019600884021c19610bfb565b50600019600882021c195b8554600886021b811984511682821617845250818411610c1c575050610c69565b50600194909401939182900391015b5b60208210610c4d5783548152600190930192601f1990910190602001610c2c565b8115610c695780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610c84929190611166565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ce885858584610ba2565b509392505050565b60008282604051602001610d05929190611166565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610d5857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461095e57600080fd5b80516020808301519190811015610da9576000198160200360031b1b821691505b50919050565b600060208284031215610dc157600080fd5b5051919050565b60005b83811015610de3578181015183820152602001610dcb565b50506000910152565b60008151808452610e04816020860160208601610dc8565b601f01601f19169290920160200192915050565b82815260406020820152600061048f6040830184610dec565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610e5857600080fd5b815167ffffffffffffffff80821115610e7357610e73610e31565b604051601f8301601f19908116603f01168101908282118183101715610e9b57610e9b610e31565b81604052838152866020858801011115610eb457600080fd5b610ec5846020830160208901610dc8565b9695505050505050565b600060208284031215610ee157600080fd5b815167ffffffffffffffff811115610ef857600080fd5b61048f84828501610e47565b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451610f7b816003860160208901610dc8565b808401905081600382015284519150610f9b826004830160208801610dc8565b0160040195945050505050565b60008251610fba818460208701610dc8565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561100557845183529383019391830191600101610fe9565b5050809350505050826040830152949350505050565b60008060006060848603121561103057600080fd5b835167ffffffffffffffff8082111561104857600080fd5b61105487838801610e47565b945060208601519350604086015191508082111561107157600080fd5b5061107e86828701610e47565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082018082111561017957610179611088565b600060001982036110c4576110c4611088565b5060010190565b600084516110dd818460208901610dc8565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff810361113357611133611088565b60010192915050565b8181038181111561017957610179611088565b808202811582820484141761017957610179611088565b82815260006020808301845182860160005b8281101561119457815184529284019290840190600101611178565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a676574206120756e6971756520656e74697479206e6f6e63652028726f6f74206d6f64756c6529676574206120756e6971756520656e74697479206e6f6e636520286e6f6e2d726f6f74206d6f64756c6529a164736f6c6343000815000a60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b61121b8062002d5283390190565b608051612cd1620000816000396000818161040701526107880152612cd16000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100df57806345ec9354146100fc5780637c5b03351461010f578063e1af802c1461012257600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100ca575b600080fd5b61009561009036600461275a565b61012a565b60405190151581526020015b60405180910390f35b6100b261020f565b6040516001600160a01b0390911681526020016100a1565b6100dd6100d836600461278d565b61021e565b005b6040516b756e69717565456e7469747960a01b81526020016100a1565b604051601f1936013581526020016100a1565b6100dd61011d36600461278d565b610560565b6100b261099f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101bd57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061020957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006102196109a9565b905090565b6102386b756e69717565456e7469747960a01b5b826109db565b600061024261099f565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201526b756e69717565456e7469747960a01b60228201529091506001600160a01b0382169063b29e4089906030016040516020818303038152906040526102af9061283e565b6040518263ffffffff1660e01b81526004016102cd91815260200190565b600060405180830381600087803b1580156102e757600080fd5b505af11580156102fb573d6000803e3d6000fd5b505060408051613a3160f11b60208201526b756e69717565456e7469747960a01b60228201527f7461626c65000000000000000000000000000000000000000000000000000000603082015261036c93500190506040516020818303038152906040526103679061283e565b610a20565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b03831691633350b6a991016040516020818303038152906040526103c99061283e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b50506040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b03851693506326d981029250016040516020818303038152906040526104c59061283e565b6040518263ffffffff1660e01b81526004016105189181526040602082018190526011908201527f676574556e69717565456e746974792829000000000000000000000000000000606082015260800190565b6020604051808303816000875af1158015610537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055b9190612862565b505050565b6105786b756e69717565456e7469747960a01b610232565b600061058261099f565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201526b756e69717565456e7469747960a01b602282015290915060009081906001600160a01b03841690819063b29e4089906030016040516020818303038152906040526105f69061283e565b60405160240161060891815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161065592506128a3565b600060405180830381855af49150503d8060008114610690576040519150601f19603f3d011682016040523d82523d6000602084013e610695565b606091505b5091509150816106a8576106a881610a6c565b60408051613a3160f11b60208201526b756e69717565456e7469747960a01b60228201527f7461626c650000000000000000000000000000000000000000000000000000006030820152610714910160405160208183030381529060405261070f9061283e565b610a74565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b038516918291633350b6a991016040516020818303038152906040526107739061283e565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161080492506128a3565b600060405180830381855af49150503d806000811461083f576040519150601f19603f3d011682016040523d82523d6000602084013e610844565b606091505b509092509050816108585761085881610a6c565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b0385169182916326d9810291016040516020818303038152906040526108b79061283e565b6040805160248101929092526044820152601160648201527f676574556e69717565456e746974792829000000000000000000000000000000608482015260a40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161094592506128a3565b600060405180830381855af49150503d8060008114610980576040519150601f19603f3d011682016040523d82523d6000602084013e610985565b606091505b509092509050816109995761099981610a6c565b50505050565b6000610219610abd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806109d85750335b90565b6109e58282610afc565b15610a1c576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610a69817e20010020000000000000000000000000000000000000000000000000000000610a4c610b2b565b610a54610b4a565b610a5c610bbc565b610a64610bef565b610c74565b50565b805160208201fd5b610a69817e20010020000000000000000000000000000000000000000000000000000000610aa0610b2b565b610aa8610b4a565b610ab0610bbc565b610ab8610bef565b610d2e565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610af7573391505090565b919050565b6000806001600160a01b0316610b1984848051906020012061102a565b6001600160a01b031614159392505050565b60408051600080825260208201909252610b4481611151565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610b8457610b846128bf565b602002602001019060c5811115610b9d57610b9d6128d5565b908160c5811115610bb057610bb06128d5565b905250610b4481611151565b60408051600080825260208201909252606091610be9565b6060815260200190600190039081610bd45790505b50905090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610c065790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110610c6657610c666128bf565b602002602001018190525090565b6000610c7e610abd565b9050306001600160a01b03821603610ca357610c9e878787878787610d2e565b610d25565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990610cf2908a908a908a908a908a908a9060040161296c565b600060405180830381600087803b158015610d0c57600080fd5b505af1158015610d20573d6000803e3d6000fd5b505050505b50505050505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610da757507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610e1157613a3160f11b8687604051602001610dc691815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610e089392916004016129b6565b60405180910390fd5b610e1a8561130c565b610e25846001611494565b610e30836000611494565b60e084901c60e885901c0160ff16825114610e905760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610e08565b60e085901c60e886901c0160ff16815114610ef05760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610e08565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610f685760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610e08565b610f718661163b565b15610fcb578586604051602001610f8a91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610e0892916004016129f7565b6110178686868686604051602001610fe39190612a10565b604051602081830303815290604052866040516020016110039190612a10565b60405160208183030381529060405261171f565b61102286600161183f565b505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611076576110766128bf565b6020026020010181815250508281600181518110611096576110966128bf565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015281518082039093018352810190526000906111459061111d9061283e565b8360007e14010014000000000000000000000000000000000000000000000000000000611931565b60601c95945050505050565b6000601c8251111561117b578151604051635318beb960e01b8152600401610e0891815260200190565b60008080805b85518110156112565760006111bf8783815181106111a1576111a16128bf565b602002602001015160c58111156111ba576111ba6128d5565b6119ee565b9050806000036111d45760019092019161120c565b821561120c576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061122d5761122d6128bf565b602002602001015160c5811115611246576112466128d5565b901b949094179350600101611181565b50600581111561127c57604051635318beb960e01b815260048101829052602401610e08565b8451819003600861128f60026020612a39565b6112999190612a4c565b83901b9390931792600860016112b160026020612a39565b6112bb9190612a39565b6112c59190612a4c565b81901b939093179260086001806112de60026020612a39565b6112e89190612a39565b6112f29190612a39565b6112fc9190612a4c565b9190911b92909217949350505050565b80611343576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061134e82611a4e565b90506005811115611395576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610e08565b60006113a083611a8b565b905060006113ae8383612a63565b9050601c8111156113f5576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610e08565b60005b8281101561148d5760ff601b82900360080286901c166000819003611449576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115611484576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016113f8565b5050505050565b801580156114a0575081155b156114c157604051635318beb960e01b815260006004820152602401610e08565b60006114cc83611a4e565b905060058111156114f357604051635318beb960e01b815260048101829052602401610e08565b60006114fe84611a8b565b9050600061150c8383612a63565b9050601c81111561153357604051635318beb960e01b815260048101829052602401610e08565b60008060005b838110156115f45760006115616115508a84611a9d565b60c58111156111ba576111ba6128d5565b11156115ab578481106115a0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916115ec565b848110156115e5576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101611539565b5083821461161857604051635318beb960e01b815260048101839052602401610e08565b848114610d2557604051635318beb960e01b815260048101829052602401610e08565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611674576116746128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905260009061170b906116e39061283e565b8360007e01010001000000000000000000000000000000000000000000000000000000611ac5565b90506117178160f81c90565b949350505050565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006117568484611afb565b905060006117648585611b18565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061179e5761179e6128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526118339061180a9061283e565b828686867e60030220202000000000000000000000000000000000000000000000000000611b44565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611875576118756128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905261055b906118e19061283e565b826000856040516020016118fc91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611e91565b60008061193c610abd565b9050306001600160a01b038216036119625761195a86868686611ac5565b915050611717565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906119ad908990899089908990600401612ab1565b602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195a9190612ae0565b6000808260c5811115611a0357611a036128d5565b60ff1690506061811015611a1d57601f1660010192915050565b60618360c5811115611a3157611a316128d5565b03611a3f5750601492915050565b50600092915050565b50919050565b60006008600180611a6160026020612a39565b611a6b9190612a39565b611a759190612a39565b611a7f9190612a4c565b8260ff911c1692915050565b600060086001611a6b60026020612a39565b6000601b8290036008028360ff911c1660c5811115611abe57611abe6128d5565b9392505050565b6000611af2611ad48686611ea6565b60ff858116601b0360080285901c16611aed8587611efc565b611f3f565b95945050505050565b8151815160009181810160389190911b1760609190911b17611abe565b60608282604051602001611b2d929190612af9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611bd057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611bc39493929190612b28565b60405180910390a2611022565b6000611bdb87611f90565b905060005b8151811015611cbe576000828281518110611bfd57611bfd6128bf565b60200260200101519050611c296001826affffffffffffffffffffff191661205890919063ffffffff16565b15611cab576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611c78908c908c908c908c908c908c90600401612b72565b600060405180830381600087803b158015611c9257600080fd5b505af1158015611ca6573d6000803e3d6000fd5b505050505b5080611cb681612bcb565b915050611be0565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611cf59493929190612b28565b60405180910390a26000611d098888611ea6565b90506000602087019050611d21826000895184612076565b6000611d2c85611a4e565b1115611db0576000611d3e8a8a612136565b878155905060208601915060008060005b611d5888611a4e565b8160ff161015611dab57611d6d8d8d8361218c565b9250611d888a8260ff166028026038011c64ffffffffff1690565b9150611d978360008488612076565b611da18286612a63565b9450600101611d4f565b505050505b60005b8351811015611833576000848281518110611dd057611dd06128bf565b60200260200101519050611dfc6002826affffffffffffffffffffff191661205890919063ffffffff16565b15611e7e576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611e4b908e908e908e908e908e908e90600401612b72565b600060405180830381600087803b158015611e6557600080fd5b505af1158015611e79573d6000803e3d6000fd5b505050505b5080611e8981612bcb565b915050611db3565b61148d8585611ea08487611efc565b8561220c565b60008282604051602001611ebb929190612be5565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611f3757611f2360ff601b83900360080287901c1683612a63565b915080611f2f81612bcb565b915050611f01565b509392505050565b600060208210611f6557602082048401935060208281611f6157611f61612c13565b0691505b508254600882021b602082900380841115611f37576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611fca57611fca6128bf565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090612041906120399061283e565b8360006124bb565b905061171761205382600084516124f5565b612585565b60008160ff16826120698560581c90565b1660ff1614905092915050565b82156120f057602083106120a05760208304840193506020838161209c5761209c612c13565b0692505b82156120f05760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116120e1575050610999565b50600194909401939182900391015b5b602082106121125780518455600190930192601f19909101906020016120f1565b8115610999576000600019600884021c198554835182169119161785555050505050565b6000828260405160200161214b929190612be5565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016121a1929190612be5565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361229657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161228993929190612c29565b60405180910390a2610999565b60006122a28585611ea6565b905060006122af86611f90565b905060005b815181101561238e5760008282815181106122d1576122d16128bf565b602002602001015190506122fd6004826affffffffffffffffffffff191661205890919063ffffffff16565b1561237b576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612348908b908b908b908b90600401612c66565b600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b505050505b508061238681612bcb565b9150506122b4565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516123c393929190612c29565b60405180910390a26123de828565ffffffffffff1685612596565b60005b8151811015610d255760008282815181106123fe576123fe6128bf565b6020026020010151905061242a6008826affffffffffffffffffffff191661205890919063ffffffff16565b156124a8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612475908b908b908b908b90600401612c66565b600060405180830381600087803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b505050505b50806124b381612bcb565b9150506123e1565b60606117176124cb85858561218c565b60006124f0856124db89896125ac565b9060ff166028026038011c64ffffffffff1690565b6125bf565b6000818311158015612508575083518211155b612544578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610e0893929190612c9f565b602084016125528482612a63565b905060006125608585612a39565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611abe83601560006125e2565b61055b838383516125a78560200190565b612076565b6000611abe6125bb8484612136565b5490565b60405160208101601f19603f8484010116604052828252611f378585858461265d565b606060006125f08560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161261657612616612c13565b04905060405193506020840160208202810160405281855260005b82811015612651578451871c825293870193602090910190600101612631565b50505050509392505050565b82156126e657602083106126875760208304840193506020838161268357612683612c13565b0692505b82156126e65760208390036000818410156126ab5750600019600884021c196126b6565b50600019600882021c195b8554600886021b8119845116828216178452508184116126d7575050610999565b50600194909401939182900391015b5b602082106127085783548152600190930192601f19909101906020016126e7565b8115610999576000600019600884021c198251865482169119161782525050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a6957600080fd5b60006020828403121561276c57600080fd5b8135611abe8161272c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561279f57600080fd5b813567ffffffffffffffff808211156127b757600080fd5b818401915084601f8301126127cb57600080fd5b8135818111156127dd576127dd612777565b604051601f8201601f19908116603f0116810190838211818310171561280557612805612777565b8160405282815287602084870101111561281e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015611a485760001960209190910360031b1b16919050565b60006020828403121561287457600080fd5b8151611abe8161272c565b60005b8381101561289a578181015183820152602001612882565b50506000910152565b600082516128b581846020870161287f565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845261290381602086016020860161287f565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561295f57828403895261294d8483516128eb565b98850198935090840190600101612935565b5091979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061299760c0830185612917565b82810360a08401526129a98185612917565b9998505050505050505050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611af260608301846128eb565b82815260406020820152600061171760408301846128eb565b602081526000611abe6020830184612917565b634e487b7160e01b600052601160045260246000fd5b8181038181111561020957610209612a23565b808202811582820484141761020957610209612a23565b8082018082111561020957610209612a23565b600081518084526020808501945080840160005b83811015612aa657815187529582019590820190600101612a8a565b509495945050505050565b848152608060208201526000612aca6080830186612a76565b60ff949094166040830152506060015292915050565b600060208284031215612af257600080fd5b5051919050565b60008351612b0b81846020880161287f565b835190830190612b1f81836020880161287f565b01949350505050565b608081526000612b3b6080830187612a76565b8281036020840152612b4d81876128eb565b90508460408401528281036060840152612b6781856128eb565b979650505050505050565b86815260c060208201526000612b8b60c0830188612a76565b8281036040840152612b9d81886128eb565b90508560608401528281036080840152612bb781866128eb565b9150508260a0830152979650505050505050565b60006000198203612bde57612bde612a23565b5060010190565b82815260006020808301845182860160005b8281101561295f57815184529284019290840190600101612bf7565b634e487b7160e01b600052601260045260246000fd5b606081526000612c3c6060830186612a76565b65ffffffffffff851660208401528281036040840152612c5c81856128eb565b9695505050505050565b848152608060208201526000612c7f6080830186612a76565b65ffffffffffff851660408401528281036060840152612b6781856128eb565b606081526000612cb260608301866128eb565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506111fb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063490923cd146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610ec7565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c6102d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896102e1565b905090565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f7461626c650000000000000000000000000000000000000000000000000000006030820152600091829161022b910160405160208183030381529060405261022690610f09565b610313565b610236906001610f5f565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f7461626c6500000000000000000000000000000000000000000000000000000060308201529192506102d291016040516020818303038152906040526102cc90610f09565b82610358565b919050565b60006101896103b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103105750335b90565b6040805160008082526020820190925260006103508483837e200100200000000000000000000000000000000000000000000000000000006103fb565b949350505050565b604080516000808252602082018352918101839052906103af90849083906060820160408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006104d2565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806102d2573391505090565b6000806104066103b4565b90503073ffffffffffffffffffffffffffffffffffffffff82160361043957610431868686866105a2565b915050610350565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990610491908990899089908990600401610fad565b602060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104319190610fdc565b60006104dc6103b4565b90503073ffffffffffffffffffffffffffffffffffffffff82160361050d5761050886868686866105d8565b61059a565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae090610567908990899089908990899060040161103b565b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b505050505b505050505050565b60006105cf6105b186866105f4565b60ff858116601b0360080285901c166105ca858761064a565b61068d565b95945050505050565b6105ed85856105e7848761064a565b856106de565b5050505050565b60008282604051602001610609929190611082565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156106855761067160ff601b83900360080287901c1683610f5f565b91508061067d816110bd565b91505061064f565b509392505050565b6000602082106106b3576020820484019350602082816106af576106af6110d7565b0691505b508254600882021b602082900380841115610685576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361076857837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161075b93929190611106565b60405180910390a2610991565b600061077485856105f4565b9050600061078186610997565b905060005b81518110156108605760008282815181106107a3576107a3611143565b602002602001015190506107cf6004826affffffffffffffffffffff1916610a9290919063ffffffff16565b1561084d576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061081a908b908b908b908b90600401611172565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b5080610858816110bd565b915050610786565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161089593929190611106565b60405180910390a26108b0828565ffffffffffff1685610ab0565b60005b815181101561098d5760008282815181106108d0576108d0611143565b602002602001015190506108fc6008826affffffffffffffffffffff1916610a9290919063ffffffff16565b1561097a576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610947908b908b908b908b90600401611172565b600060405180830381600087803b15801561096157600080fd5b505af1158015610975573d6000803e3d6000fd5b505050505b5080610985816110bd565b9150506108b3565b5050505b50505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106109d1576109d1611143565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610a7b90610a7390610f09565b836000610ac6565b9050610350610a8d8260008451610b00565b610b99565b60008160ff1682610aa38560581c90565b1660ff1614905092915050565b6103af83838351610ac18560200190565b610bb1565b6060610350610ad6858585610c71565b6000610afb85610ae68989610cf1565b9060ff166028026038011c64ffffffffff1690565b610d04565b6000818311158015610b13575083518211155b610b58578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b4f939291906111b6565b60405180910390fd5b60208401610b668482610f5f565b90506000610b7485856111db565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610baa8360156000610d27565b9392505050565b8215610c2b5760208310610bdb57602083048401935060208381610bd757610bd76110d7565b0692505b8215610c2b5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c1c575050610991565b50600194909401939182900391015b5b60208210610c4d5780518455600190930192601f1990910190602001610c2c565b8115610991576000600019600884021c198554835182169119161785555050505050565b60008383604051602001610c86929190611082565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610baa610d008484610da2565b5490565b60405160208101601f19603f848401011660405282825261068585858584610df8565b60606000610d358560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d5b57610d5b6110d7565b04905060405193506020840160208202810160405281855260005b82811015610d96578451871c825293870193602090910190600101610d76565b50505050509392505050565b60008282604051602001610db7929190611082565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610e815760208310610e2257602083048401935060208381610e1e57610e1e6110d7565b0692505b8215610e81576020839003600081841015610e465750600019600884021c19610e51565b50600019600882021c195b8554600886021b811984511682821617845250818411610e72575050610991565b50600194909401939182900391015b5b60208210610ea35783548152600190930192601f1990910190602001610e82565b8115610991576000600019600884021c198251865482169119161782525050505050565b600060208284031215610ed957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610baa57600080fd5b80516020808301519190811015610f2a576000198160200360031b1b821691505b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561017957610179610f30565b600081518084526020808501945080840160005b83811015610fa257815187529582019590820190600101610f86565b509495945050505050565b848152608060208201526000610fc66080830186610f72565b60ff949094166040830152506060015292915050565b600060208284031215610fee57600080fd5b5051919050565b6000815180845260005b8181101561101b57602081850181015186830182015201610fff565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061105460a0830187610f72565b60ff86166040840152828103606084015261106f8186610ff5565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156110b057815184529284019290840190600101611094565b5091979650505050505050565b600060001982036110d0576110d0610f30565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006111196060830186610f72565b65ffffffffffff8516602084015282810360408401526111398185610ff5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b84815260806020820152600061118b6080830186610f72565b65ffffffffffff8516604084015282810360608401526111ab8185610ff5565b979650505050505050565b6060815260006111c96060830186610ff5565b60208301949094525060400152919050565b8181038181111561017957610179610f3056fea164736f6c6343000815000a","sourceMap":"1477:4359:201:-:0;;;1572:26:101;;;1594:4;-1:-1:-1;;1572:26:101;;;;;;;;3126:44:104;;;;;;;;;;;228:9:0;186:51;;1643:24:201;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1603:64:201;;;-1:-1:-1;;;;;;1603:64:201;-1:-1:-1;;;;;1603:64:201;;;;;;;;;;1693:93;-1:-1:-1;;;;;;;;;1693:25:201;:93::i;:::-;1671:115;;1477:4359;;;;;;;;;;;;941:257:59;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;-1:-1:-1;;;;;;1084:15:59;;-1:-1:-1;;;;;;;336:5:16;1103:31:59;;;;1084:51;-1:-1:-1;;;;;;1139:13:59;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;1477:4359:201:-;;;;;;;;:::o;14:222:203:-;79:9;;;100:10;;;97:133;;;152:10;147:3;143:20;140:1;133:31;187:4;184:1;177:15;215:4;212:1;205:15;97:133;14:222;;;;:::o;:::-;1477:4359:201;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001325760003560e01c806378cdebf911620000c0578063974884d5116200008b578063ba414fa6116200006e578063ba414fa614620001fb578063e20c9f711462000216578063fa7626d4146200022057600080fd5b8063974884d514620001e7578063b5508aa914620001f157600080fd5b806378cdebf914620001b057806385226c8114620001ba5780638a5fc88814620001d3578063916a17c614620001dd57600080fd5b80634f95666211620001015780634f95666214620001795780635ecdf433146200018357806366d9a9a0146200018d578063786bd7bc14620001a657600080fd5b80630a9254e414620001375780631ed7831c14620001435780633e5e3c2314620001655780633f7286f4146200016f575b600080fd5b620001416200022e565b005b6200014d62000375565b6040516200015c919062002859565b60405180910390f35b6200014d620003d9565b6200014d6200043b565b620001416200049d565b62000141620007ae565b6200019762000915565b6040516200015c9190620028a8565b6200014162000a1d565b6200014162000b07565b620001c462000cbd565b6040516200015c9190620029cb565b6200014162000d97565b6200019762001245565b6200014162001344565b620001c462001497565b6200020562001571565b60405190151581526020016200015c565b6200014d620016bd565b600054620002059060ff1681565b6040516200023c90620027f7565b604051809103906000f08015801562000259573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de8620002a06200171f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002fa57600080fd5b505af11580156200030f573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550620003739050565b565b6060600d805480602002602001604051908101604052809291908181526020018280548015620003cf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620003b0575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b602154601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da92620004e69291909116906024810162002a47565b600060405180830381600087803b1580156200050157600080fd5b505af115801562000516573d6000803e3d6000fd5b50506040517f06447d56000000000000000000000000000000000000000000000000000000008152739c0257114eb9399a2985f8e75dad7600c5d89fe3600482018190529250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d5690602401600060405180830381600087803b1580156200059757600080fd5b505af1158015620005ac573d6000803e3d6000fd5b5050601f5460009250620005ca91506001600160a01b03166200182a565b9050620005e2620005db8462001899565b82620018e0565b601f546200061190620005fe906001600160a01b03166200182a565b6200060b83600162002a81565b620018e0565b62000620620005fe8462001899565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fd787b73700000000000000000000000000000000000000000000000000000000620006d2620006cc7f74620000000000000000000000000000000000000000000000000000000000007f756e69717565456e7469747900000000000000000000000000000000000000007f7461626c6500000000000000000000000000000000000000000000000000000062001a4c565b62001ac6565b85604051602401620006e692919062002a97565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200075a9160040162002ac4565b600060405180830381600087803b1580156200077557600080fd5b505af11580156200078a573d6000803e3d6000fd5b5050601f54620007a992506001600160a01b0316905084607b62001c00565b505050565b6021546040805180820190915260208082527f696e7374616c6c526f6f7420756e6971756520656e74697479206d6f64756c6590820152620007f09062001ccb565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e926200084f9291909116906024810162002a47565b600060405180830381600087803b1580156200086a57600080fd5b505af11580156200087f573d6000803e3d6000fd5b505050506200088d62001f9f565b620008b160405180606001604052806027815260200162017afd6027913962001ccb565b601f54600090620008cb906001600160a01b03166200182a565b9050620008d762001f9f565b620008e6620005db8362001899565b601f546200090290620005fe906001600160a01b03166200182a565b62000911620005fe8362001899565b5050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620009fb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009a75790505b5050505050815250508152602001906001019062000939565b50505050905090565b60215460408051808201909152601c81527f696e7374616c6c20756e6971756520656e74697479206d6f64756c6500000000602082015262000a5f9062001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000aa59291909116906024810162002a47565b600060405180830381600087803b15801562000ac057600080fd5b505af115801562000ad5573d6000803e3d6000fd5b5050505062000ae362001f9f565b620008b16040518060600160405280602b815260200162017b24602b913962001ccb565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000b4d9291909116906024810162002a47565b600060405180830381600087803b15801562000b6857600080fd5b505af115801562000b7d573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562000c0757600080fd5b505af115801562000c1c573d6000803e3d6000fd5b5050601f546020546001600160a01b039182169350638da798da92501660005b6040519080825280601f01601f19166020018201604052801562000c67576020820181803683370190505b506040518363ffffffff1660e01b815260040162000c8792919062002a47565b600060405180830381600087803b15801562000ca257600080fd5b505af115801562000cb7573d6000803e3d6000fd5b50505050565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000a1457838290600052602060002001805462000d039062002ae0565b80601f016020809104026020016040519081016040528092919081815260200182805462000d319062002ae0565b801562000d825780601f1062000d565761010080835404028352916020019162000d82565b820191906000526020600020905b81548152906001019060200180831162000d6457829003601f168201915b50505050508152602001906001019062000ce1565b601f54602080546040805160008152928301908190526346d3cc6d60e11b90526001600160a01b0392831692638da798da9262000ddd9291909116906024810162002a47565b600060405180830381600087803b15801562000df857600080fd5b505af115801562000e0d573d6000803e3d6000fd5b50505050600060405162000e219062002805565b604051809103906000f08015801562000e3e573d6000803e3d6000fd5b509050600062000eb07f73790000000000000000000000000000000000000000000000000000000000007f736f6d656e7300000000000000000000000000000000000000000000000000007f6563686f556e69717565456e746974790000000000000000000000000000000062001a4c565b601f546040517fb29e40890000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffff0000000000000000000000000000000083167f6e730000000000000000000000000000000000000000000000000000000000001760048201529192506001600160a01b03169063b29e408990602401600060405180830381600087803b15801562000f5257600080fd5b505af115801562000f67573d6000803e3d6000fd5b5050601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038681166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b15801562000fda57600080fd5b505af115801562000fef573d6000803e3d6000fd5b5050601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af08000000000000000000000000000000000000000000000000000000008152600095506001600160a01b039093169350633ae7af089262001096928792910162002b1c565b6000604051808303816000875af1158015620010b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010e0919081019062002bb4565b806020019051810190620010f5919062002c02565b601f546040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7826d14d0000000000000000000000000000000000000000000000000000000017905291517f3ae7af080000000000000000000000000000000000000000000000000000000081529394506000936001600160a01b0390931692633ae7af08926200119c92889290910162002b1c565b6000604051808303816000875af1158015620011bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011e6919081019062002bb4565b806020019051810190620011fb919062002c02565b601f5490915060009062001218906001600160a01b03166200182a565b90506200122c826200060b85600162002a81565b6200123e816200060b84600162002a81565b5050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000a145760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200132b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012d75790505b5050505050815250508152602001906001019062001269565b601f54602080546040805160008152928301908190527faf068c9e0000000000000000000000000000000000000000000000000000000090526001600160a01b039283169263af068c9e92620013a39291909116906024810162002a47565b600060405180830381600087803b158015620013be57600080fd5b505af1158015620013d3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f14012068000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200145d57600080fd5b505af115801562001472573d6000803e3d6000fd5b5050601f546020546001600160a01b03918216935063af068c9e925016600062000c3c565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000a14578382906000526020600020018054620014dd9062002ae0565b80601f01602080910402602001604051908101604052809291908181526020018280546200150b9062002ae0565b80156200155c5780601f1062001530576101008083540402835291602001916200155c565b820191906000526020600020905b8154815290600101906020018083116200153e57829003601f168201915b505050505081526020019060010190620014bb565b60008054610100900460ff1615620015925750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016b85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200163a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002c1c565b60408051601f1981840301815290829052620016569162002c66565b6000604051808303816000865af19150503d806000811462001695576040519150601f19603f3d011682016040523d82523d6000602084013e6200169a565b606091505b5091505080806020019051810190620016b4919062002c84565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620003cf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003b0575050505050905090565b60006040516200172f9062002813565b604051809103906000f0801580156200174c573d6000803e3d6000fd5b506040516200175b9062002821565b604051809103906000f08015801562001778573d6000803e3d6000fd5b5060405162001787906200282f565b604051809103906000f080158015620017a4573d6000803e3d6000fd5b50604051620017b3906200283d565b604051809103906000f080158015620017d0573d6000803e3d6000fd5b50604051620017df906200284b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001824573d6000803e3d6000fd5b50905090565b6000816001600160a01b0316638459353e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200186d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001893919062002c02565b92915050565b604080516000808252602082019092526000620018d88483837e200100200000000000000000000000000000000000000000000000000000006200222f565b949350505050565b80821462000911577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200196e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a162000911620022f7565b600062001a5c6070601062002a81565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16176fffffffffffffffffffffffffffffffff19841690911c1790509392505050565b606081601081901b600062001adb836200243e565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161562001b3a5762001b347fffffffffffffffffffffffffffff000000000000000000000000000000000000841662002457565b62001b71565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff1983161562001b9c5762001b968362002457565b62001bd3565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200162001be79392919062002ca8565b6040516020818303038152906040529350505050919050565b60408051600080825260208201835281830184905282518083038401815260608301938490527f390baae00000000000000000000000000000000000000000000000000000000090935290916001600160a01b0386169163390baae09162001c919187918691907e200100200000000000000000000000000000000000000000000000000000006064840162002d77565b600060405180830381600087803b15801562001cac57600080fd5b505af115801562001cc1573d6000803e3d6000fd5b5050505050505050565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562001d6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d93919062002c84565b62001d9b5750565b601b805462001daa9062002ae0565b9050600014601b60405160200162001dc3919062002e5b565b6040516020818303038152906040529062001e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b60405180910390fd5b50601d8160405162001e29919062002c66565b9081526020016040518091039020546000148160405160200162001e4e919062002ee2565b6040516020818303038152906040529062001e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e0d919062002ac4565b50601b62001ea7828262002fa2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f0757600080fd5b505af115801562001f1c573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562001f8a57600080fd5b505af11580156200123e573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206d919062002c84565b620020755750565b600060a082601c546200208991906200306f565b6200209591906200306f565b620020a290600162002a81565b90506000811162002110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162001e0d565b80601d601b60405162002124919062003085565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002173601b8262003093565b5062002211601b8054620021879062002ae0565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b59062002ae0565b8015620022065780601f10620021da5761010080835404028352916020019162002206565b820191906000526020600020905b815481529060010190602001808311620021e857829003601f168201915b5050505050620024ed565b604080516020810190915260008152601b90620007a9908262002fa2565b6000806200223c620025f3565b9050306001600160a01b0382160362002266576200225d868686866200262e565b915050620018d8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990620022b390899089908990899060040162003175565b602060405180830381865afa158015620022d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200225d919062002c02565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620024105760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620023ab929160200162002c1c565b60408051601f1981840301815290829052620023c79162002c66565b6000604051808303816000865af19150503d806000811462002406576040519150601f19603f3d011682016040523d82523d6000602084013e6200240b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60006200244e6070601062002a81565b9190911b919050565b606060005b6010811015620024bc576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615620024bc5780620024b381620031a6565b9150506200245c565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280620018d8565b620025f07f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002535919062002c66565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1682526200257f9160040190815260200190565b600060405180830381865afa1580156200259d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025c7919081019062002bb4565b82604051602001620025db929190620031c3565b6040516020818303038152906040526200266a565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620016b8573391505090565b600062002661620026408686620026df565b60ff858116601b0360080285901c166200265b858762002737565b62002780565b95945050505050565b620025f08160405160240162002681919062002ac4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620027d6565b60008282604051602001620026f692919062003248565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562002778576200276160ff601b83900360080287901c168362002a81565b9150806200276f81620031a6565b9150506200273c565b509392505050565b600060208210620027aa57602082048401935060208281620027a657620027a662003285565b0691505b508254600882021b60208290038084111562002778576001850154600882021c82179150509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200329c83390190565b6111e480620087d683390190565b611a7980620099ba83390190565b6118cc806200b43383390190565b610b15806200ccff83390190565b61567c806200d81483390190565b614c6d8062012e9083390190565b6020808252825182820181905260009190848201906040850190845b818110156200289c5783516001600160a01b03168352928401929184019160010162002875565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620029525783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200290e565b50978a01979550505091870191600101620028d0565b50919998505050505050505050565b60005b83811015620029945781810151838201526020016200297a565b50506000910152565b60008151808452620029b781602086016020860162002977565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002a2457603f1988860301845262002a118583516200299d565b94509285019290850190600101620029f2565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0383168152604060208201526000620018d860408301846200299d565b634e487b7160e01b600052601160045260246000fd5b8082018082111562001893576200189362002a6b565b60408152600062002aac60408301856200299d565b90506001600160a01b03831660208301529392505050565b60208152600062002ad960208301846200299d565b9392505050565b600181811c9082168062002af557607f821691505b60208210810362002b1657634e487b7160e01b600052602260045260246000fd5b50919050565b828152604060208201526000620018d860408301846200299d565b600067ffffffffffffffff8084111562002b555762002b5562002a31565b604051601f8501601f19908116603f0116810190828211818310171562002b805762002b8062002a31565b8160405280935085815286868601111562002b9a57600080fd5b62002baa86602083018762002977565b5050509392505050565b60006020828403121562002bc757600080fd5b815167ffffffffffffffff81111562002bdf57600080fd5b8201601f8101841362002bf157600080fd5b620018d88482516020840162002b37565b60006020828403121562002c1557600080fd5b5051919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162002c5881600485016020870162002977565b919091016004019392505050565b6000825162002c7a81846020870162002977565b9190910192915050565b60006020828403121562002c9757600080fd5b8151801515811462002ad957600080fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845162002d0b81600386016020890162002977565b80840190508160038201528451915062002d2d82600483016020880162002977565b0160040195945050505050565b600081518084526020808501945080840160005b8381101562002d6c5781518752958201959082019060010162002d4e565b509495945050505050565b85815260a06020820152600062002d9260a083018762002d3a565b60ff86166040840152828103606084015262002daf81866200299d565b9150508260808301529695505050505050565b6000815462002dd18162002ae0565b6001828116801562002dec576001811462002e205762002e51565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416875282151583028701945062002e51565b8560005260208060002060005b8581101562002e485781548a82015290840190820162002e2d565b50505082870194505b5050505092915050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600062002e8f600c83018462002dc2565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000825162002f1c81600c85016020870162002977565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620007a957600081815260208120601f850160051c8101602086101562002f795750805b601f850160051c820191505b8181101562002f9a5782815560010162002f85565b505050505050565b815167ffffffffffffffff81111562002fbf5762002fbf62002a31565b62002fd78162002fd0845462002ae0565b8462002f50565b602080601f8311600181146200300f576000841562002ff65750858301515b600019600386901b1c1916600185901b17855562002f9a565b600085815260208120601f198616915b8281101562003040578886015182559484019460019091019084016200301f565b50858210156200305f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111562001893576200189362002a6b565b600062002ad9828462002dc2565b8181036200309f575050565b620030ab825462002ae0565b67ffffffffffffffff811115620030c657620030c662002a31565b620030d78162002fd0845462002ae0565b6000601f8211600181146200310e5760008315620030f55750848201545b600019600385901b1c1916600184901b1784556200123e565b600085815260209020601f19841690600086815260209020845b838110156200314a578286015482556001958601959091019060200162003128565b50858310156200305f5793015460001960f8600387901b161c19169092555050600190811b01905550565b84815260806020820152600062003190608083018662002d3a565b60ff949094166040830152506060015292915050565b60006000198203620031bc57620031bc62002a6b565b5060010190565b7f474153205245504f52543a200000000000000000000000000000000000000000815260008351620031fd81600c85016020880162002977565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200323c81600d84016020880162002977565b01600d01949350505050565b82815260006020808301845182860160005b8281101562003278578151845292840192908401906001016200325a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a608060405234801561001057600080fd5b506111c4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c15780637826d14d146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610d46565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c610198565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896101a2565b905090565b60006101896101d4565b60006101896102d9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101d15750335b90565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f73797374656d000000000000000000000000000000000000000000000000000060308201526000916102c6910160405160208183030381529060405261026a90610d88565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f490923cd00000000000000000000000000000000000000000000000000000000179052610325565b8060200190518101906101899190610daf565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610320573391505090565b919050565b60606000610331610198565b905073ffffffffffffffffffffffffffffffffffffffff811630036103f457600061035b85610497565b50905073ffffffffffffffffffffffffffffffffffffffff81166103c05784610383866105c2565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103b7929190610e18565b60405180910390fd5b60006103da6103cd6101a2565b36601f19013584886106ff565b94509050806103ec576103ec84610780565b505050610179565b6040517f3ae7af0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690633ae7af08906104489087908790600401610e18565b6000604051808303816000875af1158015610467573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048f9190810190610ecf565b949350505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106104d1576104d1610f04565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061059d9061057790610d88565b857e15020014010000000000000000000000000000000000000000000000000000610788565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b606081601081901b60006105d583610872565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106305761062b7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610889565b610667565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561069d5761069883610889565b6106d4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016106e693929190610f1a565b6040516020818303038152906040529350505050919050565b600060608373ffffffffffffffffffffffffffffffffffffffff16610725848888610935565b6040516107329190610fa8565b600060405180830381855af49150503d806000811461076d576040519150601f19603f3d011682016040523d82523d6000602084013e610772565b606091505b509097909650945050505050565b805160208201fd5b60606000606060006107986102d9565b90503073ffffffffffffffffffffffffffffffffffffffff8216036107ce576107c2878787610965565b93509350935050610869565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd90610824908a908a908a90600401610fc4565b600060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c2919081019061101b565b93509350939050565b60006108806070601061109e565b9190911b919050565b606060005b60108110156108f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156108f857806108f0816110b1565b91505061088e565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000094909416602085015280516030909401905282525090565b606083838360405160200161094c939291906110cb565b60405160208183030381529060405290505b9392505050565b606060006060600061097685610a6d565b9050610983878783610a90565b9350600061099086610ad2565b90508015610a62576109a28888610b0f565b935066ffffffffffffff841667ffffffffffffffff8111156109c6576109c6610e31565b6040519080825280601f01601f1916602001820160405280156109f0576020820181803683370190505b5092506020830160005b828160ff161015610a5f576000610a128b8b84610b22565b90506000610a2f888460ff166028026038011c64ffffffffff1690565b9050610a3e8260008387610ba2565b610a48818561109e565b935050508080610a579061111d565b9150506109fa565b50505b505093509350939050565b60006008610a7d6002602061113c565b610a87919061114f565b9190911c919050565b606081600003610aaf575060408051602081019091526000815261095e565b6000610abb8585610c6f565b9050610ac981600085610cc5565b95945050505050565b60006008600180610ae56002602061113c565b610aef919061113c565b610af9919061113c565b610b03919061114f565b8260ff911c1692915050565b600061095e610b1e8484610cf0565b5490565b60008383604051602001610b37929190611166565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215610c2b5760208310610bcc57602083048401935060208381610bc857610bc86111a1565b0692505b8215610c2b576020839003600081841015610bf05750600019600884021c19610bfb565b50600019600882021c195b8554600886021b811984511682821617845250818411610c1c575050610c69565b50600194909401939182900391015b5b60208210610c4d5783548152600190930192601f1990910190602001610c2c565b8115610c695780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610c84929190611166565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f8484010116604052828252610ce885858584610ba2565b509392505050565b60008282604051602001610d05929190611166565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060208284031215610d5857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461095e57600080fd5b80516020808301519190811015610da9576000198160200360031b1b821691505b50919050565b600060208284031215610dc157600080fd5b5051919050565b60005b83811015610de3578181015183820152602001610dcb565b50506000910152565b60008151808452610e04816020860160208601610dc8565b601f01601f19169290920160200192915050565b82815260406020820152600061048f6040830184610dec565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610e5857600080fd5b815167ffffffffffffffff80821115610e7357610e73610e31565b604051601f8301601f19908116603f01168101908282118183101715610e9b57610e9b610e31565b81604052838152866020858801011115610eb457600080fd5b610ec5846020830160208901610dc8565b9695505050505050565b600060208284031215610ee157600080fd5b815167ffffffffffffffff811115610ef857600080fd5b61048f84828501610e47565b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451610f7b816003860160208901610dc8565b808401905081600382015284519150610f9b826004830160208801610dc8565b0160040195945050505050565b60008251610fba818460208701610dc8565b9190910192915050565b6000606082018583526020606081850152818651808452608086019150828801935060005b8181101561100557845183529383019391830191600101610fe9565b5050809350505050826040830152949350505050565b60008060006060848603121561103057600080fd5b835167ffffffffffffffff8082111561104857600080fd5b61105487838801610e47565b945060208601519350604086015191508082111561107157600080fd5b5061107e86828701610e47565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082018082111561017957610179611088565b600060001982036110c4576110c4611088565b5060010190565b600084516110dd818460208901610dc8565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600060ff821660ff810361113357611133611088565b60010192915050565b8181038181111561017957610179611088565b808202811582820484141761017957610179611088565b82815260006020808301845182860160005b8281101561119457815184529284019290840190600101611178565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a676574206120756e6971756520656e74697479206e6f6e63652028726f6f74206d6f64756c6529676574206120756e6971756520656e74697479206e6f6e636520286e6f6e2d726f6f74206d6f64756c6529a164736f6c6343000815000a","sourceMap":"1477:4359:201:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1791:166;;;:::i;:::-;;2170:134:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;3671:942:201:-;;;:::i;2806:624::-;;;:::i;2456:178:107:-;;;:::i;:::-;;;;;;;:::i;1961:616:201:-;;;:::i;2581:221::-;;;:::i;2310:140:107:-;;;:::i;:::-;;;;;;;:::i;4617:1217:201:-;;;:::i;2787:146:107:-;;;:::i;3434:233:201:-;;;:::i;1875:141:107:-;;;:::i;1819:584:101:-;;;:::i;:::-;;;4024:14:203;;4017:22;3999:41;;3987:2;3972:18;1819:584:101;3859:187:203;2022:142:107;;;:::i;1572:26:101:-;;;;;;;;;1791:166:201;1848:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1821:5:201;:40;;;;-1:-1:-1;;;;;1821:40:201;;;;;;;;;1867:16;1884:18;:16;:18::i;:::-;1867:36;;;;;;;;;;-1:-1:-1;;;;;4235:55:203;;;1867:36:201;;;4217:74:203;4190:18;;1867:36:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1945:5:201;;996:42:24;2304:38;;;;-1:-1:-1;;;;;1945:5:201;;;2304:38:24;;;;;;-1:-1:-1;1909:43:201;;-1:-1:-1;2241:106:24;1909:43:201;1791:166::o;2170:134:107:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:107;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:107;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:107;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;3671:942:201:-;3733:8;;3748:5;;3768:18;;;3788:12;;;3712:18;3788:12;;;;;;;;;-1:-1:-1;;;3748:53:201;;-1:-1:-1;;;;;3748:5:201;;;;:19;;:53;;3768:18;;;;;3748:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3921:20:201;;;;;3879:36;3921:20;;;4217:74:203;;;3879:36:201;-1:-1:-1;3921:13:201;;-1:-1:-1;3921:13:201;;4190:18:203;;3921:20:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3994:5:201;;3947:20;;-1:-1:-1;3978:22:201;;-1:-1:-1;;;;;;3994:5:201;3978:15;:22::i;:::-;3970:31;-1:-1:-1;4051:49:201;4060:25;4077:7;4060:16;:25::i;:::-;4087:12;4051:8;:49::i;:::-;4182:5;;4149:59;;4166:22;;-1:-1:-1;;;;;4182:5:201;4166:15;:22::i;:::-;4191:16;:12;4206:1;4191:16;:::i;:::-;4149:8;:59::i;:::-;4214:53;4223:25;4240:7;4223:16;:25::i;4214:53::-;4327:15;;4382:40;4432:104;:93;4468:14;277:23:188;438:16;4432:25:201;:93::i;:::-;:102;:104::i;:::-;4546:5;4350:209;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4350:209:201;;;;;;;;;;;;;;;;;;;;;;;4327:238;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4588:5:201;;4571:37;;-1:-1:-1;;;;;;4588:5:201;;-1:-1:-1;4595:7:201;4604:3;4571:16;:37::i;:::-;3706:907;;;3671:942::o;2806:624::-;2867:8;;2882:50;;;;;;;;;;;;;;;;;;;;:14;:50::i;:::-;2938:5;;2962:18;;;2982:12;;;2938:5;2982:12;;;;;;;;;2938:57;;;-1:-1:-1;;;;;2938:5:201;;;;:23;;:57;;2962:18;;;;;2938:57;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3001:14;:12;:14::i;:::-;3022:57;;;;;;;;;;;;;;;;;;:14;:57::i;:::-;3132:5;;3085:20;;3116:22;;-1:-1:-1;;;;;3132:5:201;3116:15;:22::i;:::-;3108:31;-1:-1:-1;3145:14:201;:12;:14::i;:::-;3209:49;3218:25;3235:7;3218:16;:25::i;3209:49::-;3340:5;;3307:59;;3324:22;;-1:-1:-1;;;;;3340:5:201;3324:15;:22::i;3307:59::-;3372:53;3381:25;3398:7;3381:16;:25::i;3372:53::-;2840:590;;2806:624::o;2456:178:107:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;1961:616:201:-;2018:8;;2033:46;;;;;;;;;;;;;;;;;;;:14;:46::i;:::-;2085:5;;2105:18;;;2125:12;;;2085:5;2125:12;;;;;;;;;-1:-1:-1;;;2085:53:201;;-1:-1:-1;;;;;2085:5:201;;;;:19;;:53;;2105:18;;;;;2085:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2144:14;:12;:14::i;:::-;2165:61;;;;;;;;;;;;;;;;;;:14;:61::i;2581:221::-;2622:5;;2642:18;;;2662:12;;;2622:5;2662:12;;;;;;;;;-1:-1:-1;;;2622:53:201;;-1:-1:-1;;;;;2622:5:201;;;;:19;;:53;;2642:18;;;;;2622:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2681:57:201;;;;;2697:40;2681:57;;;6125:98:203;2681:15:201;;-1:-1:-1;2681:15:201;;-1:-1:-1;6098:18:203;;2681:57:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2744:5:201;;2764:18;;-1:-1:-1;;;;;2744:5:201;;;;-1:-1:-1;2744:19:201;;-1:-1:-1;2764:18:201;2744:5;2784:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2784:12:201;;2744:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2581:221::o;2310:140:107:-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4617:1217:201;4666:5;;4686:18;;;4706:12;;;4666:5;4706:12;;;;;;;;;-1:-1:-1;;;4666:53:201;;-1:-1:-1;;;;;4666:5:201;;;;:19;;:53;;4686:18;;;;;4666:53;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4806:45;4854:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4806:76;;4888:35;4926:123;4968:15;4926:123;;:25;:123::i;:::-;5055:5;;:66;;;;;539:36:59;2781:46;;816:18:94;2780:74:59;5055:66:201;;;6853:25:203;4888:161:201;;-1:-1:-1;;;;;;5055:5:201;;:23;;6826:18:203;;5055:66:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5127:5:201;;:76;;;;;;;;7149:25:203;;;-1:-1:-1;;;;;7210:55:203;;;7190:18;;;7183:83;5127:5:201;7282:18:203;;;7275:50;5127:5:201;;;;-1:-1:-1;5127:20:201;;-1:-1:-1;7122:18:203;;5127:76:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5313:5:201;;5350:59;;;;;;;;;;;;;;;;;;;;;;;5313:97;;;;;5271:21;;-1:-1:-1;;;;;;5313:5:201;;;;-1:-1:-1;5313:10:201;;:97;;5324:24;;5350:59;5313:97;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5313:97:201;;;;;;;;;;;;:::i;:::-;5295:138;;;;;;;;;;;;:::i;:::-;5481:5;;5518:59;;;;;;;;;;;;;;;;;;;;;;;5481:97;;;;;5271:162;;-1:-1:-1;5439:21:201;;-1:-1:-1;;;;;5481:5:201;;;;:10;;:97;;5492:24;;5518:59;;5481:97;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5481:97:201;;;;;;;;;;;;:::i;:::-;5463:138;;;;;;;;;;;;:::i;:::-;5647:5;;5439:162;;-1:-1:-1;5607:21:201;;5631:22;;-1:-1:-1;;;;;5647:5:201;5631:15;:22::i;:::-;5607:46;-1:-1:-1;5703:60:201;5720:13;5736:26;5744:13;5761:1;5736:26;:::i;5703:60::-;5769;5786:13;5802:26;5810:13;5827:1;5802:26;:::i;5769:60::-;4660:1174;;;;;4617:1217::o;2787:146:107:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:233:201;3479:5;;3503:18;;;3523:12;;;3479:5;3523:12;;;;;;;;;3479:57;;;-1:-1:-1;;;;;3479:5:201;;;;:23;;:57;;3503:18;;;;;3479:57;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3542:57:201;;;;;3558:40;3542:57;;;6125:98:203;3542:15:201;;-1:-1:-1;3542:15:201;;-1:-1:-1;6098:18:203;;3542:57:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3605:5:201;;3629:18;;-1:-1:-1;;;;;3605:5:201;;;;-1:-1:-1;3605:23:201;;-1:-1:-1;3629:18:201;3605:5;3649:12;;1875:141:107;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:101;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:101;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;9164:74:203;;;2221:17:101;9254:18:203;;;9247:34;2196:43:101;;;;;;;;;9137:18:203;;;2196:43:101;;;-1:-1:-1;;1671:64:101;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:101;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:101:o;2022:142:107:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:107;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;514:223:100:-;551:10;600:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;636:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;671:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;700:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;578:156;;;;;:::i;:::-;-1:-1:-1;;;;;10731:15:203;;;10713:34;;10783:15;;;10778:2;10763:18;;10756:43;10835:15;;;10830:2;10815:18;;10808:43;10887:15;;;10882:2;10867:18;;10860:43;10639:3;10624:19;578:156:100;;;;;;;;;;;;;;;;;;;;;;;567:167;;514:223;:::o;862:161:189:-;914:20;975:5;-1:-1:-1;;;;;947:71:189;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;940:80;862:161;-1:-1:-1;;862:161:189:o;4317:253:190:-;4424:16;;;4374:13;4424:16;;;;;;;;;4447:13;4463:64;4490:8;4395:45;4447:13;1162:66;4463:26;:64::i;:::-;4447:80;4317:253;-1:-1:-1;;;;4317:253:190:o;5209:262:101:-;5271:1;5266;:6;5262:203;;5293:41;;;;;11116:2:203;11098:21;;;11155:2;11135:18;;;11128:30;11194:34;11189:2;11174:18;;11167:62;11265:4;11260:2;11245:18;;11238:32;11302:3;11287:19;;10914:398;5293:41:101;;;;;;;;5353:31;;;11529:21:203;;;11586:2;11566:18;;;11559:30;11625:12;11620:2;11605:18;;11598:40;11705:4;11690:20;;11683:36;;;5353:31:101;;;;;;;11670:3:203;5353:31:101;;;5403;;;11942:21:203;;;11999:2;11979:18;;;11972:30;12038:12;12033:2;12018:18;;12011:40;12118:4;12103:20;;12096:36;;;5403:31:101;;;;;;;12083:3:203;5403:31:101;;;5448:6;:4;:6::i;941:257:59:-;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;1084:15;;;1103:31;336:5:16;1103:31:59;;;;1084:51;-1:-1:-1;;1139:13:59;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;3312:592::-;3376:13;3446:10;336:5:16;2463:44:59;;;3397:19;3544;3446:10;3544:7;:19::i;:::-;3521:42;-1:-1:-1;3626:12:59;3665:35;;;;:102;;3714:53;;;;:34;:53::i;:::-;3665:102;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3794:25:59;;;:87;;3833:48;3868:12;3833:34;:48::i;:::-;3794:87;;;;;;;;;;;;;;;;;;;;;3598:293;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3569:330;;;;;3312:592;;;:::o;6572:222:190:-;6680:16;;;6651:26;6680:16;;;;;;;;6749:25;;;13202:19:203;;;6749:25:190;;;;;;;;;13237:12:203;;;6749:25:190;;;;6703:86;;;;6680:16;;-1:-1:-1;;;;;6703:21:190;;;;;:86;;6725:8;;6680:16;;6651:26;1162:66;6703:86;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6645:149;6572:222;;;:::o;330:580:0:-;394:39;;;;;;;;;14628:21:203;;;;14685:2;14665:18;;;14658:30;14724:22;14704:18;;;14697:50;309:37:102;14799:20:203;;;14792:52;394:8:0;;;;14764:19:203;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:102;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:102;;883:22:0;;;;;;;309:37:102;883:20:0;:22;;;;;;;;;;;;;;;;;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;14628:21:203;;;;14685:2;14665:18;;;14658:30;14724:22;14704:18;;;14697:50;309:37:102;14799:20:203;;;14792:52;953:23:0;;-1:-1:-1;987:8:0;;;;14764:19:203;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;20245:2:203;1214:49:0;;;20227:21:203;20284:2;20264:18;;;20257:30;20323:27;20303:18;;;20296:55;20368:18;;1214:49:0;20043:349:203;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;17702:457:24:-;17859:7;17874:21;17898:17;:15;:17::i;:::-;17874:41;-1:-1:-1;17950:4:24;-1:-1:-1;;;;;17925:30:24;;;17921:234;;17972:68;17997:7;18006:8;18016:10;18028:11;17972:24;:68::i;:::-;17965:75;;;;;17921:234;18068:80;;;;;-1:-1:-1;;;;;18068:36:24;;;;;:80;;18105:7;;18114:8;;18124:10;;18136:11;;18068:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2409:432:101:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;22910:74:203;;;2677:17:101;23000:18:203;;;22993:34;;;;2712:4:101;23043:18:203;;;23036:34;2489:11:101;;1671:64;2586:43;;22883:18:203;;2652:67:101;;;-1:-1:-1;;2652:67:101;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:101;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:101;2820:7;:14;;;;;;;;2409:432::o;2991:160:59:-;3054:7;3118:26;399:6;336:5:16;3118:26:59;:::i;:::-;3084:61;;;;;2991:160;-1:-1:-1;2991:160:59:o;1757:322::-;1827:13;1848:14;1868:80;1884:2;1875:6;:11;1868:80;;;-1:-1:-1;;1902:34:59;;3181:1:2;3177:13;;3173:24;1902:39:59;;1898:50;1943:5;1898:50;1888:8;;;;:::i;:::-;;;;1868:80;;;1984:30;;;-1:-1:-1;;23422:79:203;;1984:30:59;;;23410:92:203;1984:30:59;;23518:12:203;;;;1984:30:59;;;809:21:2;;;1984:30:59;2034:39;694:164:2;1754:155:0;1818:86;317:28:102;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;6853:25:203;;;6841:2;6826:18;;6676:208;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;:::-;1754:155;:::o;1766:227:24:-;996:42;1855:22;1816:7;;-1:-1:-1;;;;;1855:22:24;;1883:106;;1931:10;1924:17;;;1766:227;:::o;35595:541:20:-;35752:7;35889:242;35933:59;35974:7;35983:8;35933:40;:59::i;:::-;36010:31;;;;4286:19:3;:27;537:1:30;4285:44:3;4251:79;;;4238:93;36059:63:20;36098:11;36111:10;36059:38;:63::i;:::-;35889:17;:242::i;:::-;35876:255;35595:541;-1:-1:-1;;;;;35595:541:20:o;5630:121:115:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:115;;;;;;;;;;;;;;;;;;;;5685:15;:59::i;50003:191:20:-;50105:7;50169;50178:8;50152:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;50152:35:20;;;;;;;;;50142:46;;50152:35;50142:46;;;;41609:22;50135:53;;50003:191;-1:-1:-1;;;50003:191:20:o;51020:242::-;51116:7;;;51155:84;51175:10;51171:14;;:1;:14;51155:84;;;51200:32;4238:93:3;4286:19;:27;;;537:1:30;4285:44:3;4251:79;;;4238:93;51200:32:20;;:::i;:::-;;-1:-1:-1;51187:3:20;;;;:::i;:::-;;;;51155:84;;;-1:-1:-1;51251:6:20;51020:242;-1:-1:-1;;;51020:242:20:o;8867:812:19:-;8965:14;9001:2;8991:6;:12;8987:112;;9060:2;9051:6;:11;9033:29;;;;9082:2;9072:12;;;;;;:::i;:::-;;;;8987:112;-1:-1:-1;9290:21:19;;9275:12;9263:25;;9259:53;9438:2;:11;;;9520:22;;;9516:159;;;9656:1;9640:14;9636:22;9630:29;9615:12;9600:13;9596:32;9592:68;9584:6;9581:80;9571:90;;8981:698;8867:812;;;;;:::o;181:376:115:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:203:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:203;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:203;;14:681;-1:-1:-1;;;;;;14:681:203:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;-1:-1:-1;;1384:95:203;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:203;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:203;;;;2283:5;-1:-1:-1;;;2311:15:203;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:203;;700:1697;-1:-1:-1;;;;;;;;;700:1697:203:o;2402:250::-;2487:1;2497:113;2511:6;2508:1;2505:13;2497:113;;;2587:11;;;2581:18;2568:11;;;2561:39;2533:2;2526:10;2497:113;;;-1:-1:-1;;2644:1:203;2626:16;;2619:27;2402:250::o;2657:330::-;2699:3;2737:5;2731:12;2764:6;2759:3;2752:19;2780:76;2849:6;2842:4;2837:3;2833:14;2826:4;2819:5;2815:16;2780:76;:::i;:::-;2901:2;2889:15;-1:-1:-1;;2885:88:203;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:203:o;2992:862::-;3154:4;3183:2;3223;3212:9;3208:18;3253:2;3242:9;3235:21;3276:6;3311;3305:13;3342:6;3334;3327:22;3380:2;3369:9;3365:18;3358:25;;3442:2;3432:6;3429:1;3425:14;3414:9;3410:30;3406:39;3392:53;;3480:2;3472:6;3468:15;3501:1;3511:314;3525:6;3522:1;3519:13;3511:314;;;-1:-1:-1;;3602:9:203;3594:6;3590:22;3586:95;3581:3;3574:108;3705:40;3738:6;3729;3723:13;3705:40;:::i;:::-;3695:50;-1:-1:-1;3803:12:203;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:203;;2992:862;-1:-1:-1;;;;;;;2992:862:203:o;4302:184::-;-1:-1:-1;;;4351:1:203;4344:88;4451:4;4448:1;4441:15;4475:4;4472:1;4465:15;4491:367;-1:-1:-1;;;;;4699:6:203;4695:55;4684:9;4677:74;4787:2;4782;4771:9;4767:18;4760:30;4658:4;4807:45;4848:2;4837:9;4833:18;4825:6;4807:45;:::i;5094:184::-;-1:-1:-1;;;5143:1:203;5136:88;5243:4;5240:1;5233:15;5267:4;5264:1;5257:15;5283:125;5348:9;;;5369:10;;;5366:36;;;5382:18;;:::i;5413:340::-;5590:2;5579:9;5572:21;5553:4;5610:45;5651:2;5640:9;5636:18;5628:6;5610:45;:::i;:::-;5602:53;;-1:-1:-1;;;;;5695:6:203;5691:55;5686:2;5675:9;5671:18;5664:83;5413:340;;;;;:::o;5758:218::-;5905:2;5894:9;5887:21;5868:4;5925:45;5966:2;5955:9;5951:18;5943:6;5925:45;:::i;:::-;5917:53;5758:218;-1:-1:-1;;;5758:218:203:o;6234:437::-;6313:1;6309:12;;;;6356;;;6377:61;;6431:4;6423:6;6419:17;6409:27;;6377:61;6484:2;6476:6;6473:14;6453:18;6450:38;6447:218;;-1:-1:-1;;;6518:1:203;6511:88;6622:4;6619:1;6612:15;6650:4;6647:1;6640:15;6447:218;;6234:437;;;:::o;7336:320::-;7542:6;7531:9;7524:25;7585:2;7580;7569:9;7565:18;7558:30;7505:4;7605:45;7646:2;7635:9;7631:18;7623:6;7605:45;:::i;7661:673::-;7736:5;7766:18;7807:2;7799:6;7796:14;7793:40;;;7813:18;;:::i;:::-;7947:2;7941:9;8013:2;8001:15;;-1:-1:-1;;7997:24:203;;;8023:2;7993:33;7989:42;7977:55;;;8047:18;;;8067:22;;;8044:46;8041:72;;;8093:18;;:::i;:::-;8133:10;8129:2;8122:22;8162:6;8153:15;;8192:6;8184;8177:22;8232:3;8223:6;8218:3;8214:16;8211:25;8208:45;;;8249:1;8246;8239:12;8208:45;8262:66;8321:6;8314:4;8306:6;8302:17;8297:3;8262:66;:::i;:::-;;;;7661:673;;;;;:::o;8339:457::-;8418:6;8471:2;8459:9;8450:7;8446:23;8442:32;8439:52;;;8487:1;8484;8477:12;8439:52;8520:9;8514:16;8553:18;8545:6;8542:30;8539:50;;;8585:1;8582;8575:12;8539:50;8608:22;;8661:4;8653:13;;8649:27;-1:-1:-1;8639:55:203;;8690:1;8687;8680:12;8639:55;8713:77;8782:7;8777:2;8771:9;8766:2;8762;8758:11;8713:77;:::i;8801:184::-;8871:6;8924:2;8912:9;8903:7;8899:23;8895:32;8892:52;;;8940:1;8937;8930:12;8892:52;-1:-1:-1;8963:16:203;;8801:184;-1:-1:-1;8801:184:203:o;9292:430::-;9489:66;9481:6;9477:79;9472:3;9465:92;9447:3;9586:6;9580:13;9602:74;9669:6;9665:1;9660:3;9656:11;9649:4;9641:6;9637:17;9602:74;:::i;:::-;9696:16;;;;9714:1;9692:24;;9292:430;-1:-1:-1;;;9292:430:203:o;9727:287::-;9856:3;9894:6;9888:13;9910:66;9969:6;9964:3;9957:4;9949:6;9945:17;9910:66;:::i;:::-;9992:16;;;;;9727:287;-1:-1:-1;;9727:287:203:o;10019:277::-;10086:6;10139:2;10127:9;10118:7;10114:23;10110:32;10107:52;;;10155:1;10152;10145:12;10107:52;10187:9;10181:16;10240:5;10233:13;10226:21;10219:5;10216:32;10206:60;;10262:1;10259;10252:12;12143:925;12592:66;12584:6;12580:79;12575:3;12568:92;12550:3;12679;12711:2;12707:1;12702:3;12698:11;12691:23;12743:6;12737:13;12759:74;12826:6;12822:1;12817:3;12813:11;12806:4;12798:6;12794:17;12759:74;:::i;:::-;12861:6;12856:3;12852:16;12842:26;;12896:2;12892:1;12888:2;12884:10;12877:22;12930:6;12924:13;12908:29;;12946:75;13012:8;13008:1;13004:2;13000:10;12993:4;12985:6;12981:17;12946:75;:::i;:::-;13041:17;13060:1;13037:25;;12143:925;-1:-1:-1;;;;;12143:925:203:o;13260:435::-;13313:3;13351:5;13345:12;13378:6;13373:3;13366:19;13404:4;13433:2;13428:3;13424:12;13417:19;;13470:2;13463:5;13459:14;13491:1;13501:169;13515:6;13512:1;13509:13;13501:169;;;13576:13;;13564:26;;13610:12;;;;13645:15;;;;13537:1;13530:9;13501:169;;;-1:-1:-1;13686:3:203;;13260:435;-1:-1:-1;;;;;13260:435:203:o;13700:717::-;14077:6;14066:9;14059:25;14120:3;14115:2;14104:9;14100:18;14093:31;14040:4;14147:57;14199:3;14188:9;14184:19;14176:6;14147:57;:::i;:::-;14252:4;14244:6;14240:17;14235:2;14224:9;14220:18;14213:45;14306:9;14298:6;14294:22;14289:2;14278:9;14274:18;14267:50;14334:33;14360:6;14352;14334:33;:::i;:::-;14326:41;;;14404:6;14398:3;14387:9;14383:19;14376:35;13700:717;;;;;;;;:::o;14981:780::-;15031:3;15072:5;15066:12;15101:36;15127:9;15101:36;:::i;:::-;15156:1;15173:18;;;15200:191;;;;15405:1;15400:355;;;;15166:589;;15200:191;15248:66;15237:9;15233:82;15228:3;15221:95;15371:6;15364:14;15357:22;15349:6;15345:35;15340:3;15336:45;15329:52;;15200:191;;15400:355;15431:5;15428:1;15421:16;15460:4;15505:2;15502:1;15492:16;15530:1;15544:165;15558:6;15555:1;15552:13;15544:165;;;15636:14;;15623:11;;;15616:35;15679:16;;;;15573:10;;15544:165;;;15548:3;;;15738:6;15733:3;15729:16;15722:23;;15166:589;;;;;14981:780;;;;:::o;15766:664::-;16116:66;16111:3;16104:79;16086:3;16202:47;16245:2;16240:3;16236:12;16228:6;16202:47;:::i;:::-;16269:66;16258:78;;16365:31;16360:2;16352:11;;16345:52;16421:2;16413:11;;15766:664;-1:-1:-1;;;15766:664:203:o;16954:694::-;17297:66;17292:3;17285:79;17267:3;17393:6;17387:13;17409:75;17477:6;17472:2;17467:3;17463:12;17456:4;17448:6;17444:17;17409:75;:::i;:::-;17548:66;17543:2;17503:16;;;;17535:11;;;17528:87;-1:-1:-1;17639:2:203;17631:11;;16954:694;-1:-1:-1;16954:694:203:o;17653:545::-;17755:2;17750:3;17747:11;17744:448;;;17791:1;17816:5;17812:2;17805:17;17861:4;17857:2;17847:19;17931:2;17919:10;17915:19;17912:1;17908:27;17902:4;17898:38;17967:4;17955:10;17952:20;17949:47;;;-1:-1:-1;17990:4:203;17949:47;18045:2;18040:3;18036:12;18033:1;18029:20;18023:4;18019:31;18009:41;;18100:82;18118:2;18111:5;18108:13;18100:82;;;18163:17;;;18144:1;18133:13;18100:82;;;18104:3;;;17653:545;;;:::o;18434:1471::-;18560:3;18554:10;18587:18;18579:6;18576:30;18573:56;;;18609:18;;:::i;:::-;18638:97;18728:6;18688:38;18720:4;18714:11;18688:38;:::i;:::-;18682:4;18638:97;:::i;:::-;18790:4;;18854:2;18843:14;;18871:1;18866:782;;;;19692:1;19709:6;19706:89;;;-1:-1:-1;19761:19:203;;;19755:26;19706:89;-1:-1:-1;;18331:1:203;18327:11;;;18323:84;18319:89;18309:100;18415:1;18411:11;;;18306:117;19808:81;;18836:1063;;18866:782;14928:1;14921:14;;;14965:4;14952:18;;-1:-1:-1;;18902:79:203;;;19079:236;19093:7;19090:1;19087:14;19079:236;;;19182:19;;;19176:26;19161:42;;19274:27;;;;19242:1;19230:14;;;;19109:19;;19079:236;;;19083:3;19343:6;19334:7;19331:19;19328:261;;;19404:19;;;19398:26;-1:-1:-1;;19487:1:203;19483:14;;;19499:3;19479:24;19475:97;19471:102;19456:118;19441:134;;19328:261;-1:-1:-1;;;;;19635:1:203;19619:14;;;19615:22;19602:36;;-1:-1:-1;18434:1471:203:o;19910:128::-;19977:9;;;19998:11;;;19995:37;;;20012:18;;:::i;20397:197::-;20525:3;20550:38;20584:3;20576:6;20550:38;:::i;20599:1554::-;20718:3;20712:4;20709:13;20706:26;;20725:5;;20599:1554::o;20706:26::-;20755:37;20787:3;20781:10;20755:37;:::i;:::-;20815:18;20807:6;20804:30;20801:56;;;20837:18;;:::i;:::-;20866:97;20956:6;20916:38;20948:4;20942:11;20916:38;:::i;20866:97::-;20989:1;21017:2;21009:6;21006:14;21034:1;21029:867;;;;21940:1;21957:6;21954:89;;;-1:-1:-1;22009:19:203;;;22003:26;21954:89;-1:-1:-1;;18331:1:203;18327:11;;;18323:84;18319:89;18309:100;18415:1;18411:11;;;18306:117;22056:81;;20999:1148;;21029:867;14928:1;14921:14;;;14965:4;14952:18;;-1:-1:-1;;21065:79:203;;;14928:1;14921:14;;;14965:4;14952:18;;21288:9;21310:251;21324:7;21321:1;21318:14;21310:251;;;21406:21;;;21400:28;21385:44;;21456:1;21529:18;;;;21484:15;;;;21347:4;21340:12;21310:251;;;21314:3;21589:6;21580:7;21577:19;21574:263;;;21650:21;;21644:28;-1:-1:-1;;21747:3:203;21735:1;21731:14;;;21727:24;21723:97;21719:102;21704:118;21689:134;;;-1:-1:-1;;21883:1:203;21867:14;;;21863:22;21850:36;;-1:-1:-1;20599:1554:203:o;22158:545::-;22479:6;22468:9;22461:25;22522:3;22517:2;22506:9;22502:18;22495:31;22442:4;22543:57;22595:3;22584:9;22580:19;22572:6;22543:57;:::i;:::-;22648:4;22636:17;;;;22631:2;22616:18;;22609:45;-1:-1:-1;22685:2:203;22670:18;22663:34;22535:65;22158:545;-1:-1:-1;;22158:545:203:o;23081:195::-;23120:3;-1:-1:-1;;23144:5:203;23141:77;23138:103;;23221:18;;:::i;:::-;-1:-1:-1;23268:1:203;23257:13;;23081:195::o;24186:764::-;24576:14;24571:3;24564:27;24546:3;24620:6;24614:13;24636:75;24704:6;24699:2;24694:3;24690:12;24683:4;24675:6;24671:17;24636:75;:::i;:::-;24775:3;24770:2;24730:16;;;24762:11;;;24755:24;24804:13;;24826:76;24804:13;24888:2;24880:11;;24873:4;24861:17;;24826:76;:::i;:::-;24922:17;24941:2;24918:26;;24186:764;-1:-1:-1;;;;24186:764:203:o;24955:639::-;25205:6;25200:3;25193:19;25175:3;25231:2;25264;25259:3;25255:12;25296:6;25290:13;25361:2;25353:6;25349:15;25382:1;25392:175;25406:6;25403:1;25400:13;25392:175;;;25469:13;;25455:28;;25505:14;;;;25542:15;;;;25428:1;25421:9;25392:175;;;-1:-1:-1;25583:5:203;;24955:639;-1:-1:-1;;;;;;;24955:639:203:o;25599:184::-;-1:-1:-1;;;25648:1:203;25641:88;25748:4;25745:1;25738:15;25772:4;25769:1;25762:15","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAccessInWorldContext()":"8a5fc888","testInstall()":"786bd7bc","testInstallRoot()":"5ecdf433","testInstallRootTwice()":"974884d5","testInstallTwice()":"78cdebf9","testPublicAccess()":"4f956662"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAccessInWorldContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallRootTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPublicAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/UniqueEntityModule.t.sol\":\"UniqueEntityModuleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a\",\"dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f\",\"dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d\",\"dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5\",\"dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8\",\"dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9\",\"dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3\",\"dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e\",\"dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a\",\"dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738\",\"dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f\",\"dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9\",\"dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695\",\"dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee\",\"dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793\",\"dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25\",\"dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952\",\"dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35\",\"dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c\",\"dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef\",\"dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce\",\"dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01\",\"dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14\",\"dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc\",\"dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV\"]},\"node_modules/@latticexyz/world/src/codegen/index.sol\":{\"keccak256\":\"0x01fd0a07213a3f79997c859ae5f8c19fc3f1cc3a0fe7201b50c3e32082538610\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://902a6bc854a9b0134a97e47dea61a330c0e24d5eb315615c21c879b57c5da7c8\",\"dweb:/ipfs/Qmcx9Zr24GbnrRvEFMGgyzZcwmeXxbyz87Lb8BonKRW6PX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024\",\"dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol\":{\"keccak256\":\"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43\",\"dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961\",\"dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e\",\"dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91\",\"dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4\",\"dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b\",\"dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b\",\"dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a\",\"dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436\",\"dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330\",\"dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231\",\"dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231\",\"dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9\",\"dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol\":{\"keccak256\":\"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417\",\"dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e\",\"dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0\",\"dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e\",\"dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6\",\"dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24\",\"dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198\",\"dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795\",\"dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45\",\"dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4\"]},\"node_modules/@latticexyz/world/test/createCoreModule.sol\":{\"keccak256\":\"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2\",\"dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/interfaces/IUniqueEntitySystem.sol\":{\"keccak256\":\"0x522fec5a5d0005c6902235f49e9c59570c158ff470472d91afb81c8934d1f8b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c65e929a0196d5333f3642a62c21334df295fbdac98660e4ace31ad9d2a22cea\",\"dweb:/ipfs/QmeLXDZrnMQKaBF6nALVsV6HyutugrsCQaqch64YnZ69ya\"]},\"src/modules/uniqueentity/UniqueEntityModule.sol\":{\"keccak256\":\"0xc34a240aa9cb2ab69563b1ac1352d70c2a1d2dc70939c0f04dea9cfb58face68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c052d7e04d3c9745de9ab311f185018b6f7c739905492a01186c1cbf64ba14f\",\"dweb:/ipfs/QmR91MqzvPSsDJx2sT4yh8x8xVFQHzNNxBiK7zF4HGHiLJ\"]},\"src/modules/uniqueentity/UniqueEntitySystem.sol\":{\"keccak256\":\"0x7459e16f89df6b682f5dd355d0f9178c0d540d6388db0740fdb832d871a8e4bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64667b045d4af2ec8ee9856a8377e0d61563cbcd4953bdff75e60dc08e055d65\",\"dweb:/ipfs/QmUAHh1AMyG1Mq4SH5is2q97V3tAc3nqjcx5AzRWkATe5K\"]},\"src/modules/uniqueentity/constants.sol\":{\"keccak256\":\"0x935e1f7df4e8f1d80eb32acdab6b2858a338a7e55e3b18c72a2d9ab6235d8aa5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fe96e5efe8fab8a4c9397b5900367d571ae767c8f6570a7002c50ffed34d955\",\"dweb:/ipfs/QmX9fDKquaeeyZHwzYUaZdUbN5xFhWsMNsZwQuzNQ4mvRR\"]},\"src/modules/uniqueentity/getUniqueEntity.sol\":{\"keccak256\":\"0xf83b6e046aae9e6bb8b83102118bfaa08851adf5fc0322dd80d1c5515e0a85b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09388d89f2a78968f12ad01570798191d772e5236948bce50c85cb12eb5d47f6\",\"dweb:/ipfs/QmYCbh4uGErTdyDWw3PLpRrQXbGtca8JmwD5KPUfA6kk8U\"]},\"src/modules/uniqueentity/tables/UniqueEntity.sol\":{\"keccak256\":\"0x15981f4f3413313df8a1dccb6cdb6489ba6c50da7be7651c610d8151bd84e8df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ffaaa3ba664f66cda3e301ef942a2e934d3d4985b9e61385c37474088b5e4c7\",\"dweb:/ipfs/Qma3XkPm3KhyP1wU7vk4FYgXkjPYQSacao6rNht3DscoJS\"]},\"src/utils/SystemSwitch.sol\":{\"keccak256\":\"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da\",\"dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH\"]},\"test/UniqueEntityModule.t.sol\":{\"keccak256\":\"0xe419cc7b82710152d0a8d1e7fe53f9a6384fc2f213aade251dd6270394554401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30292e01cd4743ea6bce6ebaaf7ed374dc99f4a7fffef4d4b38a3a9617310750\",\"dweb:/ipfs/QmX3kcu9WVuAFwRePvQD5dR8cYHS9sKGMqnZw9W1GAQAs9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAccessInWorldContext"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstall"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallRoot"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallRootTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPublicAccess"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/UniqueEntityModule.t.sol":"UniqueEntityModuleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b","urls":["bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a","dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f","urls":["bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f","dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a","urls":["bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d","dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9","urls":["bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5","dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91","urls":["bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8","dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9","urls":["bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9","dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710","urls":["bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3","dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7","urls":["bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e","dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94","urls":["bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a","dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa","urls":["bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738","dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6","urls":["bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f","dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782","urls":["bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9","dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d","urls":["bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695","dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91","urls":["bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee","dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f","urls":["bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793","dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650","urls":["bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25","dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41","urls":["bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952","dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900","urls":["bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35","dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9","urls":["bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c","dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881","urls":["bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef","dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19","urls":["bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce","dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2","urls":["bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01","dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b","urls":["bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14","dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff","urls":["bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc","dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/index.sol":{"keccak256":"0x01fd0a07213a3f79997c859ae5f8c19fc3f1cc3a0fe7201b50c3e32082538610","urls":["bzz-raw://902a6bc854a9b0134a97e47dea61a330c0e24d5eb315615c21c879b57c5da7c8","dweb:/ipfs/Qmcx9Zr24GbnrRvEFMGgyzZcwmeXxbyz87Lb8BonKRW6PX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed","urls":["bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024","dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol":{"keccak256":"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350","urls":["bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43","dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8","urls":["bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961","dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb","urls":["bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e","dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426","urls":["bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91","dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac","urls":["bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4","dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed","urls":["bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b","dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd","urls":["bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b","dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527","urls":["bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a","dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8","urls":["bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436","dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22","urls":["bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330","dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a","urls":["bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231","dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5","urls":["bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231","dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43","urls":["bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9","dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol":{"keccak256":"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125","urls":["bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417","dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0","urls":["bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e","dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc","urls":["bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0","dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc","urls":["bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e","dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d","urls":["bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6","dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc","urls":["bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24","dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427","urls":["bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198","dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039","urls":["bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795","dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3","urls":["bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45","dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4"],"license":"MIT"},"node_modules/@latticexyz/world/test/createCoreModule.sol":{"keccak256":"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8","urls":["bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2","dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/interfaces/IUniqueEntitySystem.sol":{"keccak256":"0x522fec5a5d0005c6902235f49e9c59570c158ff470472d91afb81c8934d1f8b9","urls":["bzz-raw://c65e929a0196d5333f3642a62c21334df295fbdac98660e4ace31ad9d2a22cea","dweb:/ipfs/QmeLXDZrnMQKaBF6nALVsV6HyutugrsCQaqch64YnZ69ya"],"license":"MIT"},"src/modules/uniqueentity/UniqueEntityModule.sol":{"keccak256":"0xc34a240aa9cb2ab69563b1ac1352d70c2a1d2dc70939c0f04dea9cfb58face68","urls":["bzz-raw://4c052d7e04d3c9745de9ab311f185018b6f7c739905492a01186c1cbf64ba14f","dweb:/ipfs/QmR91MqzvPSsDJx2sT4yh8x8xVFQHzNNxBiK7zF4HGHiLJ"],"license":"MIT"},"src/modules/uniqueentity/UniqueEntitySystem.sol":{"keccak256":"0x7459e16f89df6b682f5dd355d0f9178c0d540d6388db0740fdb832d871a8e4bf","urls":["bzz-raw://64667b045d4af2ec8ee9856a8377e0d61563cbcd4953bdff75e60dc08e055d65","dweb:/ipfs/QmUAHh1AMyG1Mq4SH5is2q97V3tAc3nqjcx5AzRWkATe5K"],"license":"MIT"},"src/modules/uniqueentity/constants.sol":{"keccak256":"0x935e1f7df4e8f1d80eb32acdab6b2858a338a7e55e3b18c72a2d9ab6235d8aa5","urls":["bzz-raw://4fe96e5efe8fab8a4c9397b5900367d571ae767c8f6570a7002c50ffed34d955","dweb:/ipfs/QmX9fDKquaeeyZHwzYUaZdUbN5xFhWsMNsZwQuzNQ4mvRR"],"license":"MIT"},"src/modules/uniqueentity/getUniqueEntity.sol":{"keccak256":"0xf83b6e046aae9e6bb8b83102118bfaa08851adf5fc0322dd80d1c5515e0a85b1","urls":["bzz-raw://09388d89f2a78968f12ad01570798191d772e5236948bce50c85cb12eb5d47f6","dweb:/ipfs/QmYCbh4uGErTdyDWw3PLpRrQXbGtca8JmwD5KPUfA6kk8U"],"license":"MIT"},"src/modules/uniqueentity/tables/UniqueEntity.sol":{"keccak256":"0x15981f4f3413313df8a1dccb6cdb6489ba6c50da7be7651c610d8151bd84e8df","urls":["bzz-raw://1ffaaa3ba664f66cda3e301ef942a2e934d3d4985b9e61385c37474088b5e4c7","dweb:/ipfs/Qma3XkPm3KhyP1wU7vk4FYgXkjPYQSacao6rNht3DscoJS"],"license":"MIT"},"src/utils/SystemSwitch.sol":{"keccak256":"0x8242e32af7f919eebac06852a64d354f8d24ee777079244d430852f22d47230e","urls":["bzz-raw://d32745bde5e8e24e0c293545b1047a580a77602f01b8695c2236192187bdc1da","dweb:/ipfs/QmeX59sxxU6SoM9o1KbCDxuR4DmHB3nyx1Kee4nLgfq6UH"],"license":"MIT"},"test/UniqueEntityModule.t.sol":{"keccak256":"0xe419cc7b82710152d0a8d1e7fe53f9a6384fc2f213aade251dd6270394554401","urls":["bzz-raw://30292e01cd4743ea6bce6ebaaf7ed374dc99f4a7fffef4d4b38a3a9617310750","dweb:/ipfs/QmX3kcu9WVuAFwRePvQD5dR8cYHS9sKGMqnZw9W1GAQAs9"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/UniqueEntityModule.t.sol","id":136381,"exportedSymbols":{"GasReporter":[226],"IBaseWorld":[24400],"IModule":[22254],"IWorldErrors":[22430],"NAMESPACE":[125324],"RESOURCE_SYSTEM":[37052],"RESOURCE_TABLE":[15721],"ResourceId":[2782],"StoreSwitch":[8203],"System":[22601],"TABLE_NAME":[125342],"Test":[58812],"UniqueEntity":[126270],"UniqueEntityModule":[125271],"UniqueEntityModuleTest":[136380],"UniqueEntityTestSystem":[135890],"World":[23730],"WorldResourceIdInstance":[24272],"WorldResourceIdLib":[24145],"createCoreModule":[46913],"getUniqueEntity":[125423,125442]},"nodeType":"SourceUnit","src":"32:5805:201","nodes":[{"id":135843,"nodeType":"PragmaDirective","src":"32:25:201","nodes":[],"literals":["solidity",">=","0.8",".21"]},{"id":135845,"nodeType":"ImportDirective","src":"59:42:201","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":58813,"symbolAliases":[{"foreign":{"id":135844,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58812,"src":"68:4:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135847,"nodeType":"ImportDirective","src":"102:73:201","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":135846,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135849,"nodeType":"ImportDirective","src":"177:68:201","nodes":[],"absolutePath":"node_modules/@latticexyz/store/src/StoreSwitch.sol","file":"@latticexyz/store/src/StoreSwitch.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":8204,"symbolAliases":[{"foreign":{"id":135848,"name":"StoreSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"186:11:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135851,"nodeType":"ImportDirective","src":"246:56:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":23731,"symbolAliases":[{"foreign":{"id":135850,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23730,"src":"255:5:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135853,"nodeType":"ImportDirective","src":"303:60:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IModule.sol","file":"@latticexyz/world/src/IModule.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":22255,"symbolAliases":[{"foreign":{"id":135852,"name":"IModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22254,"src":"312:7:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135855,"nodeType":"ImportDirective","src":"364:85:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":24401,"symbolAliases":[{"foreign":{"id":135854,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"373:10:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135857,"nodeType":"ImportDirective","src":"450:70:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IWorldErrors.sol","file":"@latticexyz/world/src/IWorldErrors.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":22431,"symbolAliases":[{"foreign":{"id":135856,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"459:12:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135859,"nodeType":"ImportDirective","src":"521:58:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":22602,"symbolAliases":[{"foreign":{"id":135858,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22601,"src":"530:6:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135861,"nodeType":"ImportDirective","src":"580:79:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":135860,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"589:15:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135863,"nodeType":"ImportDirective","src":"661:79:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createCoreModule.sol","file":"@latticexyz/world/test/createCoreModule.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":46914,"symbolAliases":[{"foreign":{"id":135862,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"670:16:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135865,"nodeType":"ImportDirective","src":"741:88:201","nodes":[],"absolutePath":"src/modules/uniqueentity/UniqueEntityModule.sol","file":"../src/modules/uniqueentity/UniqueEntityModule.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":125272,"symbolAliases":[{"foreign":{"id":135864,"name":"UniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125271,"src":"750:18:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135867,"nodeType":"ImportDirective","src":"830:83:201","nodes":[],"absolutePath":"src/modules/uniqueentity/tables/UniqueEntity.sol","file":"../src/modules/uniqueentity/tables/UniqueEntity.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":126271,"symbolAliases":[{"foreign":{"id":135866,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"839:12:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135869,"nodeType":"ImportDirective","src":"914:82:201","nodes":[],"absolutePath":"src/modules/uniqueentity/getUniqueEntity.sol","file":"../src/modules/uniqueentity/getUniqueEntity.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":125443,"symbolAliases":[{"foreign":{"id":135868,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"src":"923:15:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135872,"nodeType":"ImportDirective","src":"998:82:201","nodes":[],"absolutePath":"src/modules/uniqueentity/constants.sol","file":"../src/modules/uniqueentity/constants.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":125388,"symbolAliases":[{"foreign":{"id":135870,"name":"NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125324,"src":"1007:9:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135871,"name":"TABLE_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125342,"src":"1018:10:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135876,"nodeType":"ImportDirective","src":"1081:116:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":24273,"symbolAliases":[{"foreign":{"id":135873,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"1090:10:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135874,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"1102:18:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135875,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24272,"src":"1122:23:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135878,"nodeType":"ImportDirective","src":"1198:78:201","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":136381,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":135877,"name":"RESOURCE_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"1207:14:201","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135890,"nodeType":"ContractDefinition","src":"1278:197:201","nodes":[{"id":135889,"nodeType":"FunctionDefinition","src":"1324:149:201","nodes":[],"body":{"id":135888,"nodeType":"Block","src":"1377:96:201","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135885,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125423,"src":"1451:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_bytes32_$","typeString":"function () returns (bytes32)"}},"id":135886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:17:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":135884,"id":135887,"nodeType":"Return","src":"1444:24:201"}]},"functionSelector":"7826d14d","implemented":true,"kind":"function","modifiers":[],"name":"echoUniqueEntity","nameLocation":"1333:16:201","parameters":{"id":135881,"nodeType":"ParameterList","parameters":[],"src":"1349:2:201"},"returnParameters":{"id":135884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135889,"src":"1368:7:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":135882,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1367:9:201"},"scope":135890,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":135879,"name":"System","nameLocations":["1313:6:201"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"1313:6:201"},"id":135880,"nodeType":"InheritanceSpecifier","src":"1313:6:201"}],"canonicalName":"UniqueEntityTestSystem","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[135890,22601,23800,22336,22203],"name":"UniqueEntityTestSystem","nameLocation":"1287:22:201","scope":136381,"usedErrors":[22360],"usedEvents":[]},{"id":136380,"nodeType":"ContractDefinition","src":"1477:4359:201","nodes":[{"id":135898,"nodeType":"UsingForDirective","src":"1534:45:201","nodes":[],"global":false,"libraryName":{"id":135895,"name":"WorldResourceIdInstance","nameLocations":["1540:23:201"],"nodeType":"IdentifierPath","referencedDeclaration":24272,"src":"1540:23:201"},"typeName":{"id":135897,"nodeType":"UserDefinedTypeName","pathNode":{"id":135896,"name":"ResourceId","nameLocations":["1568:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1568:10:201"},"referencedDeclaration":2782,"src":"1568:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":135901,"nodeType":"VariableDeclaration","src":"1583:16:201","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1594:5:201","scope":136380,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},"typeName":{"id":135900,"nodeType":"UserDefinedTypeName","pathNode":{"id":135899,"name":"IBaseWorld","nameLocations":["1583:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":24400,"src":"1583:10:201"},"referencedDeclaration":24400,"src":"1583:10:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"visibility":"internal"},{"id":135908,"nodeType":"VariableDeclaration","src":"1603:64:201","nodes":[],"constant":false,"mutability":"mutable","name":"uniqueEntityModule","nameLocation":"1622:18:201","scope":136380,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},"typeName":{"id":135903,"nodeType":"UserDefinedTypeName","pathNode":{"id":135902,"name":"UniqueEntityModule","nameLocations":["1603:18:201"],"nodeType":"IdentifierPath","referencedDeclaration":125271,"src":"1603:18:201"},"referencedDeclaration":125271,"src":"1603:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},"value":{"arguments":[],"expression":{"argumentTypes":[],"id":135906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1643:22:201","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_UniqueEntityModule_$125271_$","typeString":"function () returns (contract UniqueEntityModule)"},"typeName":{"id":135905,"nodeType":"UserDefinedTypeName","pathNode":{"id":135904,"name":"UniqueEntityModule","nameLocations":["1647:18:201"],"nodeType":"IdentifierPath","referencedDeclaration":125271,"src":"1647:18:201"},"referencedDeclaration":125271,"src":"1647:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}}},"id":135907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1643:24:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},"visibility":"internal"},{"id":135917,"nodeType":"VariableDeclaration","src":"1671:115:201","nodes":[],"constant":false,"mutability":"mutable","name":"_tableId","nameLocation":"1682:8:201","scope":136380,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135910,"nodeType":"UserDefinedTypeName","pathNode":{"id":135909,"name":"ResourceId","nameLocations":["1671:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1671:10:201"},"referencedDeclaration":2782,"src":"1671:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"value":{"arguments":[{"id":135913,"name":"RESOURCE_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"1729:14:201","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":135914,"name":"NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125324,"src":"1756:9:201","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"id":135915,"name":"TABLE_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125342,"src":"1773:10:201","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_bytes16","typeString":"bytes16"}],"expression":{"id":135911,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"1693:18:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":135912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1712:6:201","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"1693:25:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1721:6:201","1745:9:201","1767:4:201"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"1693:93:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"},{"id":135949,"nodeType":"FunctionDefinition","src":"1791:166:201","nodes":[],"body":{"id":135948,"nodeType":"Block","src":"1815:142:201","nodes":[],"statements":[{"expression":{"id":135930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135920,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"1821:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1848:9:201","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_World_$23730_$","typeString":"function () returns (contract World)"},"typeName":{"id":135925,"nodeType":"UserDefinedTypeName","pathNode":{"id":135924,"name":"World","nameLocations":["1852:5:201"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"1852:5:201"},"referencedDeclaration":23730,"src":"1852:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}},"id":135927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1848:11:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}],"id":135923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1840:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135922,"name":"address","nodeType":"ElementaryTypeName","src":"1840:7:201","typeDescriptions":{}}},"id":135928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1840:20:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":135921,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"1829:10:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseWorld_$24400_$","typeString":"type(contract IBaseWorld)"}},"id":135929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:32:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"src":"1821:40:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135931,"nodeType":"ExpressionStatement","src":"1821:40:201"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135935,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"1884:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_CoreModule_$35431_$","typeString":"function () returns (contract CoreModule)"}},"id":135936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1884:18:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}],"expression":{"id":135932,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"1867:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1873:10:201","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":22506,"src":"1867:16:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$returns$__$","typeString":"function (contract IModule) external"}},"id":135937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1867:36:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135938,"nodeType":"ExpressionStatement","src":"1867:36:201"},{"expression":{"arguments":[{"arguments":[{"id":135944,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"1945:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1937:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135942,"name":"address","nodeType":"ElementaryTypeName","src":"1937:7:201","typeDescriptions":{}}},"id":135945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135939,"name":"StoreSwitch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"1909:11:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StoreSwitch_$8203_$","typeString":"type(library StoreSwitch)"}},"id":135941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1921:15:201","memberName":"setStoreAddress","nodeType":"MemberAccess","referencedDeclaration":6960,"src":"1909:27:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":135946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:43:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135947,"nodeType":"ExpressionStatement","src":"1909:43:201"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1800:5:201","parameters":{"id":135918,"nodeType":"ParameterList","parameters":[],"src":"1805:2:201"},"returnParameters":{"id":135919,"nodeType":"ParameterList","parameters":[],"src":"1815:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136021,"nodeType":"FunctionDefinition","src":"1961:616:201","nodes":[],"body":{"id":136020,"nodeType":"Block","src":"1991:586:201","nodes":[],"statements":[{"assignments":[135954],"declarations":[{"constant":false,"id":135954,"mutability":"mutable","name":"tableId","nameLocation":"2008:7:201","nodeType":"VariableDeclaration","scope":136020,"src":"1997:18:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135953,"nodeType":"UserDefinedTypeName","pathNode":{"id":135952,"name":"ResourceId","nameLocations":["1997:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1997:10:201"},"referencedDeclaration":2782,"src":"1997:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":135956,"initialValue":{"id":135955,"name":"_tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135917,"src":"2018:8:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"1997:29:201"},{"expression":{"arguments":[{"hexValue":"696e7374616c6c20756e6971756520656e74697479206d6f64756c65","id":135958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2048:30:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_e196242de54818590696493ab4e789102fa0a36c001dc7142a35603c2ec9d730","typeString":"literal_string \"install unique entity module\""},"value":"install unique entity module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e196242de54818590696493ab4e789102fa0a36c001dc7142a35603c2ec9d730","typeString":"literal_string \"install unique entity module\""}],"id":135957,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2033:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2033:46:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135960,"nodeType":"ExpressionStatement","src":"2033:46:201"},{"expression":{"arguments":[{"id":135964,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"2105:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":135967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2135:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2125:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":135965,"name":"bytes","nodeType":"ElementaryTypeName","src":"2129:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":135968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2125:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135961,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"2085:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":135963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2091:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"2085:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":135969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2085:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135970,"nodeType":"ExpressionStatement","src":"2085:53:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135971,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2144:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2144:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135973,"nodeType":"ExpressionStatement","src":"2144:14:201"},{"expression":{"arguments":[{"hexValue":"676574206120756e6971756520656e74697479206e6f6e636520286e6f6e2d726f6f74206d6f64756c6529","id":135975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2180:45:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8f1f7b92e3568f5b0f74e4b4e9401129fbc8276d4a6be6f086b21efe325f916","typeString":"literal_string \"get a unique entity nonce (non-root module)\""},"value":"get a unique entity nonce (non-root module)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f8f1f7b92e3568f5b0f74e4b4e9401129fbc8276d4a6be6f086b21efe325f916","typeString":"literal_string \"get a unique entity nonce (non-root module)\""}],"id":135974,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2165:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:61:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135977,"nodeType":"ExpressionStatement","src":"2165:61:201"},{"assignments":[135979],"declarations":[{"constant":false,"id":135979,"mutability":"mutable","name":"uniqueEntity","nameLocation":"2240:12:201","nodeType":"VariableDeclaration","scope":136020,"src":"2232:20:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":135978,"name":"uint256","nodeType":"ElementaryTypeName","src":"2232:7:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":135986,"initialValue":{"arguments":[{"arguments":[{"id":135983,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"2279:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":135982,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"2263:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":135984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":135981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2255:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":135980,"name":"uint256","nodeType":"ElementaryTypeName","src":"2255:7:201","typeDescriptions":{}}},"id":135985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2255:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2232:54:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135987,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2292:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2292:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135989,"nodeType":"ExpressionStatement","src":"2292:14:201"},{"expression":{"arguments":[{"arguments":[{"id":135993,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135954,"src":"2382:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135991,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"2365:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":135992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2378:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"2365:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":135994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2365:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":135995,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135979,"src":"2392:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":135990,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"2356:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":135996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2356:49:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135997,"nodeType":"ExpressionStatement","src":"2356:49:201"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":136002,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"2487:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136001,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"2471:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2471:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2463:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":135999,"name":"uint256","nodeType":"ElementaryTypeName","src":"2463:7:201","typeDescriptions":{}}},"id":136004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2463:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136005,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135979,"src":"2496:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2511:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2496:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":135998,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"2454:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2454:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136009,"nodeType":"ExpressionStatement","src":"2454:59:201"},{"expression":{"arguments":[{"arguments":[{"id":136013,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135954,"src":"2545:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136011,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"2528:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2541:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"2528:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2528:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136015,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135979,"src":"2555:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2555:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136010,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"2519:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2519:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136019,"nodeType":"ExpressionStatement","src":"2519:53:201"}]},"functionSelector":"786bd7bc","implemented":true,"kind":"function","modifiers":[],"name":"testInstall","nameLocation":"1970:11:201","parameters":{"id":135950,"nodeType":"ParameterList","parameters":[],"src":"1981:2:201"},"returnParameters":{"id":135951,"nodeType":"ParameterList","parameters":[],"src":"1991:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136053,"nodeType":"FunctionDefinition","src":"2581:221:201","nodes":[],"body":{"id":136052,"nodeType":"Block","src":"2616:186:201","nodes":[],"statements":[{"expression":{"arguments":[{"id":136027,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"2642:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2672:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2662:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136028,"name":"bytes","nodeType":"ElementaryTypeName","src":"2666:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2662:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136024,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"2622:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2628:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"2622:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2622:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136033,"nodeType":"ExpressionStatement","src":"2622:53:201"},{"expression":{"arguments":[{"expression":{"expression":{"id":136037,"name":"IModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22254,"src":"2697:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IModule_$22254_$","typeString":"type(contract IModule)"}},"id":136038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2705:23:201","memberName":"Module_AlreadyInstalled","nodeType":"MemberAccess","referencedDeclaration":22231,"src":"2697:31:201","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":136039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2729:8:201","memberName":"selector","nodeType":"MemberAccess","src":"2697:40:201","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":136034,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"2681:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2684:12:201","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59998,"src":"2681:15:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4) external"}},"id":136040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2681:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136041,"nodeType":"ExpressionStatement","src":"2681:57:201"},{"expression":{"arguments":[{"id":136045,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"2764:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2794:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2784:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136046,"name":"bytes","nodeType":"ElementaryTypeName","src":"2788:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2784:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136042,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"2744:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"2744:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2744:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136051,"nodeType":"ExpressionStatement","src":"2744:53:201"}]},"functionSelector":"78cdebf9","implemented":true,"kind":"function","modifiers":[],"name":"testInstallTwice","nameLocation":"2590:16:201","parameters":{"id":136022,"nodeType":"ParameterList","parameters":[],"src":"2606:2:201"},"returnParameters":{"id":136023,"nodeType":"ParameterList","parameters":[],"src":"2616:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136125,"nodeType":"FunctionDefinition","src":"2806:624:201","nodes":[],"body":{"id":136124,"nodeType":"Block","src":"2840:590:201","nodes":[],"statements":[{"assignments":[136058],"declarations":[{"constant":false,"id":136058,"mutability":"mutable","name":"tableId","nameLocation":"2857:7:201","nodeType":"VariableDeclaration","scope":136124,"src":"2846:18:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136057,"nodeType":"UserDefinedTypeName","pathNode":{"id":136056,"name":"ResourceId","nameLocations":["2846:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"2846:10:201"},"referencedDeclaration":2782,"src":"2846:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136060,"initialValue":{"id":136059,"name":"_tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135917,"src":"2867:8:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"2846:29:201"},{"expression":{"arguments":[{"hexValue":"696e7374616c6c526f6f7420756e6971756520656e74697479206d6f64756c65","id":136062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2897:34:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_749e8dec304b56466033726710e32c6a2428a8af2e35470c84f22cc823de8e82","typeString":"literal_string \"installRoot unique entity module\""},"value":"installRoot unique entity module"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_749e8dec304b56466033726710e32c6a2428a8af2e35470c84f22cc823de8e82","typeString":"literal_string \"installRoot unique entity module\""}],"id":136061,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2882:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":136063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2882:50:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136064,"nodeType":"ExpressionStatement","src":"2882:50:201"},{"expression":{"arguments":[{"id":136068,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"2962:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2992:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2982:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136069,"name":"bytes","nodeType":"ElementaryTypeName","src":"2986:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136065,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"2938:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2944:17:201","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"2938:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2938:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136074,"nodeType":"ExpressionStatement","src":"2938:57:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":136075,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3001:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":136076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3001:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136077,"nodeType":"ExpressionStatement","src":"3001:14:201"},{"expression":{"arguments":[{"hexValue":"676574206120756e6971756520656e74697479206e6f6e63652028726f6f74206d6f64756c6529","id":136079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3037:41:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_e033e97a444b8e3375c85aa9a358976f6a0c22c74e46bea6d1a2532d684385c0","typeString":"literal_string \"get a unique entity nonce (root module)\""},"value":"get a unique entity nonce (root module)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e033e97a444b8e3375c85aa9a358976f6a0c22c74e46bea6d1a2532d684385c0","typeString":"literal_string \"get a unique entity nonce (root module)\""}],"id":136078,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3022:14:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":136080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3022:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136081,"nodeType":"ExpressionStatement","src":"3022:57:201"},{"assignments":[136083],"declarations":[{"constant":false,"id":136083,"mutability":"mutable","name":"uniqueEntity","nameLocation":"3093:12:201","nodeType":"VariableDeclaration","scope":136124,"src":"3085:20:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":136082,"name":"uint256","nodeType":"ElementaryTypeName","src":"3085:7:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":136090,"initialValue":{"arguments":[{"arguments":[{"id":136087,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"3132:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136086,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"3116:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3108:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136084,"name":"uint256","nodeType":"ElementaryTypeName","src":"3108:7:201","typeDescriptions":{}}},"id":136089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3108:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3085:54:201"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":136091,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3145:12:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":136092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3145:14:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136093,"nodeType":"ExpressionStatement","src":"3145:14:201"},{"expression":{"arguments":[{"arguments":[{"id":136097,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136058,"src":"3235:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136095,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"3218:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3231:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"3218:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3218:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":136099,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136083,"src":"3245:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136094,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"3209:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3209:49:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136101,"nodeType":"ExpressionStatement","src":"3209:49:201"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":136106,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"3340:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136105,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"3324:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3324:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3316:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136103,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:201","typeDescriptions":{}}},"id":136108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3316:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136109,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136083,"src":"3349:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3364:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3349:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136102,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"3307:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136113,"nodeType":"ExpressionStatement","src":"3307:59:201"},{"expression":{"arguments":[{"arguments":[{"id":136117,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136058,"src":"3398:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136115,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"3381:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3394:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"3381:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3381:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136119,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136083,"src":"3408:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3423:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3408:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136114,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"3372:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3372:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136123,"nodeType":"ExpressionStatement","src":"3372:53:201"}]},"functionSelector":"5ecdf433","implemented":true,"kind":"function","modifiers":[],"name":"testInstallRoot","nameLocation":"2815:15:201","parameters":{"id":136054,"nodeType":"ParameterList","parameters":[],"src":"2830:2:201"},"returnParameters":{"id":136055,"nodeType":"ParameterList","parameters":[],"src":"2840:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136157,"nodeType":"FunctionDefinition","src":"3434:233:201","nodes":[],"body":{"id":136156,"nodeType":"Block","src":"3473:194:201","nodes":[],"statements":[{"expression":{"arguments":[{"id":136131,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"3503:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3533:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3523:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136132,"name":"bytes","nodeType":"ElementaryTypeName","src":"3527:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3523:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136128,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"3479:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3485:17:201","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"3479:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3479:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136137,"nodeType":"ExpressionStatement","src":"3479:57:201"},{"expression":{"arguments":[{"expression":{"expression":{"id":136141,"name":"IModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22254,"src":"3558:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IModule_$22254_$","typeString":"type(contract IModule)"}},"id":136142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3566:23:201","memberName":"Module_AlreadyInstalled","nodeType":"MemberAccess","referencedDeclaration":22231,"src":"3558:31:201","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":136143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3590:8:201","memberName":"selector","nodeType":"MemberAccess","src":"3558:40:201","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":136138,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3542:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3545:12:201","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59998,"src":"3542:15:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes4_$returns$__$","typeString":"function (bytes4) external"}},"id":136144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3542:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136145,"nodeType":"ExpressionStatement","src":"3542:57:201"},{"expression":{"arguments":[{"id":136149,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"3629:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3659:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3649:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136150,"name":"bytes","nodeType":"ElementaryTypeName","src":"3653:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3649:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136146,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"3605:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3611:17:201","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"3605:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3605:57:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136155,"nodeType":"ExpressionStatement","src":"3605:57:201"}]},"functionSelector":"974884d5","implemented":true,"kind":"function","modifiers":[],"name":"testInstallRootTwice","nameLocation":"3443:20:201","parameters":{"id":136126,"nodeType":"ParameterList","parameters":[],"src":"3463:2:201"},"returnParameters":{"id":136127,"nodeType":"ParameterList","parameters":[],"src":"3473:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136261,"nodeType":"FunctionDefinition","src":"3671:942:201","nodes":[],"body":{"id":136260,"nodeType":"Block","src":"3706:907:201","nodes":[],"statements":[{"assignments":[136162],"declarations":[{"constant":false,"id":136162,"mutability":"mutable","name":"tableId","nameLocation":"3723:7:201","nodeType":"VariableDeclaration","scope":136260,"src":"3712:18:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136161,"nodeType":"UserDefinedTypeName","pathNode":{"id":136160,"name":"ResourceId","nameLocations":["3712:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"3712:10:201"},"referencedDeclaration":2782,"src":"3712:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136164,"initialValue":{"id":136163,"name":"_tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135917,"src":"3733:8:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"3712:29:201"},{"expression":{"arguments":[{"id":136168,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"3768:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3798:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3788:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136169,"name":"bytes","nodeType":"ElementaryTypeName","src":"3792:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3788:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136165,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"3748:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3754:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"3748:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3748:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136174,"nodeType":"ExpressionStatement","src":"3748:53:201"},{"assignments":[136176],"declarations":[{"constant":false,"id":136176,"mutability":"mutable","name":"alice","nameLocation":"3871:5:201","nodeType":"VariableDeclaration","scope":136260,"src":"3863:13:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136175,"name":"address","nodeType":"ElementaryTypeName","src":"3863:7:201","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":136186,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"616c696365","id":136182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3905:7:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c0257114eb9399a2985f8e75dad7600c5d89fe3824ffa99ec1c3eb8bf3b0501","typeString":"literal_string \"alice\""},"value":"alice"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9c0257114eb9399a2985f8e75dad7600c5d89fe3824ffa99ec1c3eb8bf3b0501","typeString":"literal_string \"alice\""}],"id":136181,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3895:9:201","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":136183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3895:18:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3887:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":136179,"name":"bytes20","nodeType":"ElementaryTypeName","src":"3887:7:201","typeDescriptions":{}}},"id":136184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3887:27:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":136178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3879:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":136177,"name":"address","nodeType":"ElementaryTypeName","src":"3879:7:201","typeDescriptions":{}}},"id":136185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3879:36:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3863:52:201"},{"expression":{"arguments":[{"id":136190,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136176,"src":"3935:5:201","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136187,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3921:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3924:10:201","memberName":"startPrank","nodeType":"MemberAccess","referencedDeclaration":59942,"src":"3921:13:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3921:20:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136192,"nodeType":"ExpressionStatement","src":"3921:20:201"},{"assignments":[136194],"declarations":[{"constant":false,"id":136194,"mutability":"mutable","name":"uniqueEntity","nameLocation":"3955:12:201","nodeType":"VariableDeclaration","scope":136260,"src":"3947:20:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":136193,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":136201,"initialValue":{"arguments":[{"arguments":[{"id":136198,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"3994:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136197,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"3978:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3970:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136195,"name":"uint256","nodeType":"ElementaryTypeName","src":"3970:7:201","typeDescriptions":{}}},"id":136200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3947:54:201"},{"expression":{"arguments":[{"arguments":[{"id":136205,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136162,"src":"4077:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136203,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"4060:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4073:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"4060:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":136207,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136194,"src":"4087:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136202,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"4051:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4051:49:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136209,"nodeType":"ExpressionStatement","src":"4051:49:201"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":136214,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"4182:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136213,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"4166:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4166:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4158:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136211,"name":"uint256","nodeType":"ElementaryTypeName","src":"4158:7:201","typeDescriptions":{}}},"id":136216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4158:31:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136217,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136194,"src":"4191:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4206:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4191:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136210,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"4149:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136221,"nodeType":"ExpressionStatement","src":"4149:59:201"},{"expression":{"arguments":[{"arguments":[{"id":136225,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136162,"src":"4240:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136223,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"4223:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4236:3:201","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":125821,"src":"4223:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_uint256_$","typeString":"function (ResourceId) view returns (uint256)"}},"id":136226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:25:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136227,"name":"uniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136194,"src":"4250:12:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4265:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4250:16:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136222,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"4214:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136231,"nodeType":"ExpressionStatement","src":"4214:53:201"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":136237,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"4382:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":136238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4395:18:201","memberName":"World_AccessDenied","nodeType":"MemberAccess","referencedDeclaration":22367,"src":"4382:31:201","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":136239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4414:8:201","memberName":"selector","nodeType":"MemberAccess","src":"4382:40:201","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":136242,"name":"RESOURCE_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15721,"src":"4468:14:201","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"id":136243,"name":"NAMESPACE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125324,"src":"4495:9:201","typeDescriptions":{"typeIdentifier":"t_bytes14","typeString":"bytes14"}},{"id":136244,"name":"TABLE_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125342,"src":"4512:10:201","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_bytes14","typeString":"bytes14"},{"typeIdentifier":"t_bytes16","typeString":"bytes16"}],"expression":{"id":136240,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"4432:18:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":136241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4451:6:201","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"4432:25:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":136245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["4460:6:201","4484:9:201","4506:4:201"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"4432:93:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":136246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4526:8:201","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":24271,"src":"4432:102:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (string memory)"}},"id":136247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4432:104:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":136248,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136176,"src":"4546:5:201","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136235,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4350:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4354:18:201","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4350:22:201","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":136249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4350:209:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136232,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4327:2:201","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":136234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4330:12:201","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"4327:15:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":136250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4327:238:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136251,"nodeType":"ExpressionStatement","src":"4327:238:201"},{"expression":{"arguments":[{"id":136255,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"4588:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},{"id":136256,"name":"tableId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136162,"src":"4595:7:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"313233","id":136257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:3:201","typeDescriptions":{"typeIdentifier":"t_rational_123_by_1","typeString":"int_const 123"},"value":"123"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_rational_123_by_1","typeString":"int_const 123"}],"expression":{"id":136252,"name":"UniqueEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126270,"src":"4571:12:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntity_$126270_$","typeString":"type(library UniqueEntity)"}},"id":136254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4584:3:201","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":126120,"src":"4571:16:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IStore_$1349_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function (contract IStore,ResourceId,uint256)"}},"id":136258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4571:37:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136259,"nodeType":"ExpressionStatement","src":"4571:37:201"}]},"functionSelector":"4f956662","implemented":true,"kind":"function","modifiers":[],"name":"testPublicAccess","nameLocation":"3680:16:201","parameters":{"id":136158,"nodeType":"ParameterList","parameters":[],"src":"3696:2:201"},"returnParameters":{"id":136159,"nodeType":"ParameterList","parameters":[],"src":"3706:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136379,"nodeType":"FunctionDefinition","src":"4617:1217:201","nodes":[],"body":{"id":136378,"nodeType":"Block","src":"4660:1174:201","nodes":[],"statements":[{"expression":{"arguments":[{"id":136267,"name":"uniqueEntityModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135908,"src":"4686:18:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"}},{"arguments":[{"hexValue":"30","id":136270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4716:1:201","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":136269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4706:9:201","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136268,"name":"bytes","nodeType":"ElementaryTypeName","src":"4710:5:201","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4706:12:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UniqueEntityModule_$125271","typeString":"contract UniqueEntityModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136264,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"4666:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4672:13:201","memberName":"installModule","nodeType":"MemberAccess","referencedDeclaration":24444,"src":"4666:19:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":136272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4666:53:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136273,"nodeType":"ExpressionStatement","src":"4666:53:201"},{"assignments":[136276],"declarations":[{"constant":false,"id":136276,"mutability":"mutable","name":"uniqueEntityTestSystem","nameLocation":"4829:22:201","nodeType":"VariableDeclaration","scope":136378,"src":"4806:45:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135890","typeString":"contract UniqueEntityTestSystem"},"typeName":{"id":136275,"nodeType":"UserDefinedTypeName","pathNode":{"id":136274,"name":"UniqueEntityTestSystem","nameLocations":["4806:22:201"],"nodeType":"IdentifierPath","referencedDeclaration":135890,"src":"4806:22:201"},"referencedDeclaration":135890,"src":"4806:22:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135890","typeString":"contract UniqueEntityTestSystem"}},"visibility":"internal"}],"id":136281,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":136279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4854:26:201","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_UniqueEntityTestSystem_$135890_$","typeString":"function () returns (contract UniqueEntityTestSystem)"},"typeName":{"id":136278,"nodeType":"UserDefinedTypeName","pathNode":{"id":136277,"name":"UniqueEntityTestSystem","nameLocations":["4858:22:201"],"nodeType":"IdentifierPath","referencedDeclaration":135890,"src":"4858:22:201"},"referencedDeclaration":135890,"src":"4858:22:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135890","typeString":"contract UniqueEntityTestSystem"}}},"id":136280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4854:28:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135890","typeString":"contract UniqueEntityTestSystem"}},"nodeType":"VariableDeclarationStatement","src":"4806:76:201"},{"assignments":[136284],"declarations":[{"constant":false,"id":136284,"mutability":"mutable","name":"uniqueEntityTestSystemId","nameLocation":"4899:24:201","nodeType":"VariableDeclaration","scope":136378,"src":"4888:35:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136283,"nodeType":"UserDefinedTypeName","pathNode":{"id":136282,"name":"ResourceId","nameLocations":["4888:10:201"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"4888:10:201"},"referencedDeclaration":2782,"src":"4888:10:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136291,"initialValue":{"arguments":[{"id":136287,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"4968:15:201","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"736f6d656e73","id":136288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5002:8:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f0ad60a4f4a65b4b1c116d4df4776fffa33077c5e90150a7a3c822c1eb40de6","typeString":"literal_string \"somens\""},"value":"somens"},{"hexValue":"6563686f556e69717565456e74697479","id":136289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5024:18:201","typeDescriptions":{"typeIdentifier":"t_stringliteral_595cba5576af5f9da3ddebe24b99ecd28db756430456807bdc5068edc6679d9a","typeString":"literal_string \"echoUniqueEntity\""},"value":"echoUniqueEntity"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_4f0ad60a4f4a65b4b1c116d4df4776fffa33077c5e90150a7a3c822c1eb40de6","typeString":"literal_string \"somens\""},{"typeIdentifier":"t_stringliteral_595cba5576af5f9da3ddebe24b99ecd28db756430456807bdc5068edc6679d9a","typeString":"literal_string \"echoUniqueEntity\""}],"expression":{"id":136285,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"4926:18:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":136286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4945:6:201","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"4926:25:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":136290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["4960:6:201","4991:9:201","5018:4:201"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"4926:123:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"4888:161:201"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":136295,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136284,"src":"5079:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":136296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5104:14:201","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"5079:39:201","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":136297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5079:41:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":136292,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"5055:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5061:17:201","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"5055:23:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":136298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5055:66:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136299,"nodeType":"ExpressionStatement","src":"5055:66:201"},{"expression":{"arguments":[{"id":136303,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136284,"src":"5148:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":136304,"name":"uniqueEntityTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136276,"src":"5174:22:201","typeDescriptions":{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135890","typeString":"contract UniqueEntityTestSystem"}},{"hexValue":"74727565","id":136305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5198:4:201","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_UniqueEntityTestSystem_$135890","typeString":"contract UniqueEntityTestSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":136300,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"5127:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5133:14:201","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"5127:20:201","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":136306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5127:76:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136307,"nodeType":"ExpressionStatement","src":"5127:76:201"},{"assignments":[136309],"declarations":[{"constant":false,"id":136309,"mutability":"mutable","name":"uniqueEntity1","nameLocation":"5279:13:201","nodeType":"VariableDeclaration","scope":136378,"src":"5271:21:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5271:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":136326,"initialValue":{"arguments":[{"arguments":[{"id":136314,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136284,"src":"5324:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136317,"name":"UniqueEntityTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135890,"src":"5365:22:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntityTestSystem_$135890_$","typeString":"type(contract UniqueEntityTestSystem)"}},"id":136318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5388:16:201","memberName":"echoUniqueEntity","nodeType":"MemberAccess","referencedDeclaration":135889,"src":"5365:39:201","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"}},{"components":[],"id":136319,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5406:2:201","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136315,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5350:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5354:10:201","memberName":"encodeCall","nodeType":"MemberAccess","src":"5350:14:201","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5350:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136312,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"5313:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5319:4:201","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"5313:10:201","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:97:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":136323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5419:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":136322,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5419:7:201","typeDescriptions":{}}}],"id":136324,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5418:9:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":136310,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5295:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5299:6:201","memberName":"decode","nodeType":"MemberAccess","src":"5295:10:201","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":136325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5295:138:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5271:162:201"},{"assignments":[136328],"declarations":[{"constant":false,"id":136328,"mutability":"mutable","name":"uniqueEntity2","nameLocation":"5447:13:201","nodeType":"VariableDeclaration","scope":136378,"src":"5439:21:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136327,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5439:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":136345,"initialValue":{"arguments":[{"arguments":[{"id":136333,"name":"uniqueEntityTestSystemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136284,"src":"5492:24:201","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136336,"name":"UniqueEntityTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135890,"src":"5533:22:201","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniqueEntityTestSystem_$135890_$","typeString":"type(contract UniqueEntityTestSystem)"}},"id":136337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5556:16:201","memberName":"echoUniqueEntity","nodeType":"MemberAccess","referencedDeclaration":135889,"src":"5533:39:201","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"}},{"components":[],"id":136338,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5574:2:201","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$__$returns$_t_bytes32_$","typeString":"function UniqueEntityTestSystem.echoUniqueEntity() returns (bytes32)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136334,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5518:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5522:10:201","memberName":"encodeCall","nodeType":"MemberAccess","src":"5518:14:201","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5518:59:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136331,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"5481:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":136332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5487:4:201","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":22461,"src":"5481:10:201","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:97:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":136342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5587:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":136341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5587:7:201","typeDescriptions":{}}}],"id":136343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5586:9:201","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":136329,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5463:3:201","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5467:6:201","memberName":"decode","nodeType":"MemberAccess","src":"5463:10:201","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":136344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5463:138:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5439:162:201"},{"assignments":[136347],"declarations":[{"constant":false,"id":136347,"mutability":"mutable","name":"uniqueEntity3","nameLocation":"5615:13:201","nodeType":"VariableDeclaration","scope":136378,"src":"5607:21:201","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136346,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5607:7:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":136351,"initialValue":{"arguments":[{"id":136349,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135901,"src":"5647:5:201","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}],"id":136348,"name":"getUniqueEntity","nodeType":"Identifier","overloadedDeclarations":[125423,125442],"referencedDeclaration":125442,"src":"5631:15:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IBaseWorld_$24400_$returns$_t_bytes32_$","typeString":"function (contract IBaseWorld) returns (bytes32)"}},"id":136350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5631:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5607:46:201"},{"expression":{"arguments":[{"arguments":[{"id":136355,"name":"uniqueEntity2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136328,"src":"5720:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5712:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136353,"name":"uint256","nodeType":"ElementaryTypeName","src":"5712:7:201","typeDescriptions":{}}},"id":136356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5712:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":136359,"name":"uniqueEntity1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136309,"src":"5744:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5736:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136357,"name":"uint256","nodeType":"ElementaryTypeName","src":"5736:7:201","typeDescriptions":{}}},"id":136360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5736:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5761:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5736:26:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136352,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"5703:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5703:60:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136364,"nodeType":"ExpressionStatement","src":"5703:60:201"},{"expression":{"arguments":[{"arguments":[{"id":136368,"name":"uniqueEntity3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136347,"src":"5786:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5778:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136366,"name":"uint256","nodeType":"ElementaryTypeName","src":"5778:7:201","typeDescriptions":{}}},"id":136369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5778:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":136372,"name":"uniqueEntity2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136328,"src":"5810:13:201","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":136371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5802:7:201","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":136370,"name":"uint256","nodeType":"ElementaryTypeName","src":"5802:7:201","typeDescriptions":{}}},"id":136373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5802:22:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5827:1:201","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5802:26:201","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":136365,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47428,"src":"5769:8:201","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":136376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5769:60:201","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136377,"nodeType":"ExpressionStatement","src":"5769:60:201"}]},"functionSelector":"8a5fc888","implemented":true,"kind":"function","modifiers":[],"name":"testAccessInWorldContext","nameLocation":"4626:24:201","parameters":{"id":136262,"nodeType":"ParameterList","parameters":[],"src":"4650:2:201"},"returnParameters":{"id":136263,"nodeType":"ParameterList","parameters":[],"src":"4660:0:201"},"scope":136380,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":135891,"name":"Test","nameLocations":["1512:4:201"],"nodeType":"IdentifierPath","referencedDeclaration":58812,"src":"1512:4:201"},"id":135892,"nodeType":"InheritanceSpecifier","src":"1512:4:201"},{"baseName":{"id":135893,"name":"GasReporter","nameLocations":["1518:11:201"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1518:11:201"},"id":135894,"nodeType":"InheritanceSpecifier","src":"1518:11:201"}],"canonicalName":"UniqueEntityModuleTest","contractDependencies":[23730,35431,35451,35650,35830,36019,125271,135890],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[136380,226,58812,49271,49268,58761,54499,54209,53445,51391,50698,49205],"name":"UniqueEntityModuleTest","nameLocation":"1486:22:201","scope":136381,"usedErrors":[],"usedEvents":[46919,46923,46927,46931,46935,46939,46943,46947,46953,46959,46967,46975,46981,46987,46993,46999,49293,49298,49303,49310,49317,49324]}],"license":"MIT"},"id":201}