@latticexyz/world 2.0.0-alpha.41 → 2.0.0-alpha.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abi/AccessControl.json +21 -21
- package/abi/AccessControlTest.json +26 -26
- package/abi/AddressArray.json +12 -12
- package/abi/ArrayLib.json +12 -12
- package/abi/Bool.json +12 -12
- package/abi/Bytes.json +21 -21
- package/abi/Call.json +12 -12
- package/abi/CommonBase.json +10 -10
- package/abi/CoreModule.json +23 -23
- package/abi/DSTest.json +12 -12
- package/abi/DecodeSlice.json +12 -12
- package/abi/EncodeArray.json +21 -21
- package/abi/FunctionSelectors.json +12 -12
- package/abi/Hooks.json +12 -12
- package/abi/{IWorld.json → IBaseWorld.json} +73 -73
- package/abi/IErrors.json +122 -122
- package/abi/IModule.json +73 -73
- package/abi/IMulticall3.json +10 -10
- package/abi/IRegistrationSystem.json +325 -325
- package/abi/IStore.json +21 -21
- package/abi/IStoreHook.json +21 -21
- package/abi/ISystemHook.json +47 -47
- package/abi/IWorldCore.json +186 -186
- package/abi/InstalledModules.json +12 -12
- package/abi/KeysWithValue.json +12 -12
- package/abi/KeysWithValueHook.json +349 -349
- package/abi/KeysWithValueModule.json +218 -218
- package/abi/KeysWithValueModuleTest.json +868 -868
- package/abi/Memory.json +17 -17
- package/abi/NamespaceOwner.json +12 -12
- package/abi/PackedCounterLib.json +22 -22
- package/abi/RegistrationModule.json +25 -25
- package/abi/RegistrationSystem.json +45 -45
- package/abi/ResourceAccess.json +12 -12
- package/abi/ResourceSelector.json +12 -12
- package/abi/ResourceType.json +12 -12
- package/abi/SchemaLib.json +22 -22
- package/abi/ScriptBase.json +10 -10
- package/abi/SliceInstance.json +21 -21
- package/abi/SliceLib.json +21 -21
- package/abi/StdAssertions.json +10 -10
- package/abi/StdChains.json +10 -10
- package/abi/StdCheats.json +10 -10
- package/abi/StdCheatsSafe.json +10 -10
- package/abi/StdInvariant.json +12 -12
- package/abi/StdUtils.json +10 -10
- package/abi/Storage.json +12 -12
- package/abi/Store.json +32 -32
- package/abi/StoreCore.json +41 -41
- package/abi/StoreCoreExtended.json +41 -41
- package/abi/StoreCoreInternal.json +41 -41
- package/abi/StoreMetadata.json +39 -39
- package/abi/StoreSwitch.json +33 -33
- package/abi/StoreView.json +12 -12
- package/abi/System.json +12 -12
- package/abi/SystemRegistry.json +12 -12
- package/abi/SystemTest.json +26 -26
- package/abi/Systems.json +12 -12
- package/abi/TableId.json +12 -12
- package/abi/Test.json +10 -10
- package/abi/TestBase.json +10 -10
- package/abi/TestSystem.json +26 -26
- package/abi/TightCoder.json +12 -12
- package/abi/Utils.json +12 -12
- package/abi/Vm.json +10 -10
- package/abi/VmSafe.json +10 -10
- package/abi/World.json +922 -922
- package/abi/WorldContext.json +10 -10
- package/abi/WorldTest.json +3006 -3006
- package/abi/WorldTestSystem.json +3006 -3006
- package/abi/WorldTestTableHook.json +3006 -3006
- package/abi/console.json +15 -15
- package/abi/console2.json +12 -12
- package/abi/stdError.json +12 -12
- package/abi/stdJson.json +12 -12
- package/abi/stdMath.json +12 -12
- package/abi/stdStorage.json +12 -12
- package/abi/stdStorageSafe.json +12 -12
- package/dist/mud.config.mjs +1 -0
- package/package.json +5 -5
- package/src/World.sol +4 -4
- package/src/interfaces/{IWorld.sol → IBaseWorld.sol} +2 -2
- package/src/interfaces/IWorldCore.sol +1 -1
- package/src/modules/keyswithvalue/KeysWithValueHook.sol +5 -5
- package/src/modules/keyswithvalue/KeysWithValueModule.sol +4 -4
- package/types/ethers-contracts/{IWorld.ts → IBaseWorld.ts} +5 -5
- package/types/ethers-contracts/factories/AccessControlTest__factory.ts +1 -1
- package/types/ethers-contracts/factories/CoreModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/DSTest__factory.ts +1 -1
- package/types/ethers-contracts/factories/{IWorld__factory.ts → IBaseWorld__factory.ts} +9 -6
- package/types/ethers-contracts/factories/KeysWithValueHook__factory.ts +1 -1
- package/types/ethers-contracts/factories/KeysWithValueModuleTest__factory.ts +1 -1
- package/types/ethers-contracts/factories/KeysWithValueModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/RegistrationModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/RegistrationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/SchemaLib__factory.ts +1 -1
- package/types/ethers-contracts/factories/SliceLib__factory.ts +1 -1
- package/types/ethers-contracts/factories/StdError__factory.ts +1 -1
- package/types/ethers-contracts/factories/StdInvariant__factory.ts +1 -1
- package/types/ethers-contracts/factories/StdStorageSafe__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreCore__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreSwitch__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreView__factory.ts +1 -1
- package/types/ethers-contracts/factories/SystemTest__factory.ts +1 -1
- package/types/ethers-contracts/factories/TestSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldTestSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldTestTableHook__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldTest__factory.ts +1 -1
- package/types/ethers-contracts/factories/World__factory.ts +1 -1
- package/types/ethers-contracts/index.ts +2 -2
package/src/World.sol
CHANGED
|
@@ -21,7 +21,7 @@ import { InstalledModules } from "./tables/InstalledModules.sol";
|
|
|
21
21
|
|
|
22
22
|
import { IModule } from "./interfaces/IModule.sol";
|
|
23
23
|
import { IWorldCore } from "./interfaces/IWorldCore.sol";
|
|
24
|
-
import {
|
|
24
|
+
import { IBaseWorld } from "./interfaces/IBaseWorld.sol";
|
|
25
25
|
import { IErrors } from "./interfaces/IErrors.sol";
|
|
26
26
|
import { IRegistrationSystem } from "./interfaces/IRegistrationSystem.sol";
|
|
27
27
|
|
|
@@ -190,7 +190,7 @@ contract World is Store, IWorldCore, IErrors {
|
|
|
190
190
|
bytes32 tableSelector = ResourceSelector.from(tableId);
|
|
191
191
|
(address systemAddress, ) = Systems.get(ResourceSelector.from(ROOT_NAMESPACE, REGISTRATION_SYSTEM_NAME));
|
|
192
192
|
|
|
193
|
-
// We can't call
|
|
193
|
+
// We can't call IBaseWorld(this).registerSchema directly because it would be handled like
|
|
194
194
|
// an external call, so msg.sender would be the address of the World contract
|
|
195
195
|
Call.withSender({
|
|
196
196
|
msgSender: msg.sender,
|
|
@@ -215,7 +215,7 @@ contract World is Store, IWorldCore, IErrors {
|
|
|
215
215
|
bytes32 resourceSelector = ResourceSelector.from(tableId);
|
|
216
216
|
(address systemAddress, ) = Systems.get(ResourceSelector.from(ROOT_NAMESPACE, REGISTRATION_SYSTEM_NAME));
|
|
217
217
|
|
|
218
|
-
// We can't call
|
|
218
|
+
// We can't call IBaseWorld(this).setMetadata directly because it would be handled like
|
|
219
219
|
// an external call, so msg.sender would be the address of the World contract
|
|
220
220
|
Call.withSender({
|
|
221
221
|
msgSender: msg.sender,
|
|
@@ -239,7 +239,7 @@ contract World is Store, IWorldCore, IErrors {
|
|
|
239
239
|
bytes32 resourceSelector = ResourceSelector.from(tableId);
|
|
240
240
|
(address systemAddress, ) = Systems.get(ResourceSelector.from(ROOT_NAMESPACE, REGISTRATION_SYSTEM_NAME));
|
|
241
241
|
|
|
242
|
-
// We can't call
|
|
242
|
+
// We can't call IBaseWorld(this).registerStoreHook directly because it would be handled like
|
|
243
243
|
// an external call, so msg.sender would be the address of the World contract
|
|
244
244
|
Call.withSender({
|
|
245
245
|
msgSender: msg.sender,
|
|
@@ -10,9 +10,9 @@ import { IWorldCore } from "../interfaces/IWorldCore.sol";
|
|
|
10
10
|
import { IRegistrationSystem } from "./IRegistrationSystem.sol";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* The
|
|
13
|
+
* The IBaseWorld interface includes all systems dynamically added to the World
|
|
14
14
|
* during the deploy process.
|
|
15
15
|
*/
|
|
16
|
-
interface
|
|
16
|
+
interface IBaseWorld is IStore, IWorldCore, IRegistrationSystem {
|
|
17
17
|
|
|
18
18
|
}
|
|
@@ -8,7 +8,7 @@ import { IModule } from "./IModule.sol";
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* The IWorldCore interfaces includes all World methods with a static function selector.
|
|
11
|
-
* Consumers should use the `
|
|
11
|
+
* Consumers should use the `IBaseWorld` interface instead, which includes
|
|
12
12
|
* dynamically registered function selectors (e.g. IRegistrationSystem)
|
|
13
13
|
*/
|
|
14
14
|
interface IWorldCore {
|
|
@@ -3,7 +3,7 @@ pragma solidity >=0.8.0;
|
|
|
3
3
|
|
|
4
4
|
import { IStoreHook } from "@latticexyz/store/src/IStore.sol";
|
|
5
5
|
import { Bytes } from "@latticexyz/store/src/Bytes.sol";
|
|
6
|
-
import {
|
|
6
|
+
import { IBaseWorld } from "@latticexyz/world/src/interfaces/IBaseWorld.sol";
|
|
7
7
|
|
|
8
8
|
import { ResourceSelector } from "../../ResourceSelector.sol";
|
|
9
9
|
|
|
@@ -28,7 +28,7 @@ contract KeysWithValueHook is IStoreHook {
|
|
|
28
28
|
uint256 targetTableId = getTargetTableSelector(sourceTableId).toTableId();
|
|
29
29
|
|
|
30
30
|
// Get the previous value
|
|
31
|
-
bytes32 previousValue = keccak256(
|
|
31
|
+
bytes32 previousValue = keccak256(IBaseWorld(msg.sender).getRecord(sourceTableId, key));
|
|
32
32
|
|
|
33
33
|
// Return if the value hasn't changed
|
|
34
34
|
if (previousValue == keccak256(data)) return;
|
|
@@ -44,7 +44,7 @@ contract KeysWithValueHook is IStoreHook {
|
|
|
44
44
|
_requireSingleKey(key);
|
|
45
45
|
|
|
46
46
|
// Remove the key from the list of keys with the previous value
|
|
47
|
-
bytes32 previousValue = keccak256(
|
|
47
|
+
bytes32 previousValue = keccak256(IBaseWorld(msg.sender).getRecord(sourceTableId, key));
|
|
48
48
|
uint256 targetTableId = getTargetTableSelector(sourceTableId).toTableId();
|
|
49
49
|
_removeKeyFromList(targetTableId, key[0], previousValue);
|
|
50
50
|
}
|
|
@@ -53,7 +53,7 @@ contract KeysWithValueHook is IStoreHook {
|
|
|
53
53
|
_requireSingleKey(key);
|
|
54
54
|
|
|
55
55
|
// Add the key to the list of keys with the new value
|
|
56
|
-
bytes32 newValue = keccak256(
|
|
56
|
+
bytes32 newValue = keccak256(IBaseWorld(msg.sender).getRecord(sourceTableId, key));
|
|
57
57
|
uint256 targetTableId = getTargetTableSelector(sourceTableId).toTableId();
|
|
58
58
|
KeysWithValue.push(targetTableId, newValue, key[0]);
|
|
59
59
|
}
|
|
@@ -62,7 +62,7 @@ contract KeysWithValueHook is IStoreHook {
|
|
|
62
62
|
_requireSingleKey(key);
|
|
63
63
|
|
|
64
64
|
// Remove the key from the list of keys with the previous value
|
|
65
|
-
bytes32 previousValue = keccak256(
|
|
65
|
+
bytes32 previousValue = keccak256(IBaseWorld(msg.sender).getRecord(sourceTableId, key));
|
|
66
66
|
uint256 targetTableId = getTargetTableSelector(sourceTableId).toTableId();
|
|
67
67
|
_removeKeyFromList(targetTableId, key[0], previousValue);
|
|
68
68
|
}
|
|
@@ -3,7 +3,7 @@ pragma solidity >=0.8.0;
|
|
|
3
3
|
|
|
4
4
|
import { StoreSwitch } from "@latticexyz/store/src/StoreSwitch.sol";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { IBaseWorld } from "../../interfaces/IBaseWorld.sol";
|
|
7
7
|
import { IModule } from "../../interfaces/IModule.sol";
|
|
8
8
|
|
|
9
9
|
import { WorldContext } from "../../WorldContext.sol";
|
|
@@ -42,7 +42,7 @@ contract KeysWithValueModule is IModule, WorldContext {
|
|
|
42
42
|
bytes32 targetTableSelector = getTargetTableSelector(sourceTableId);
|
|
43
43
|
|
|
44
44
|
// Register the target table
|
|
45
|
-
|
|
45
|
+
IBaseWorld(_world()).registerTable(
|
|
46
46
|
targetTableSelector.getNamespace(),
|
|
47
47
|
targetTableSelector.getFile(),
|
|
48
48
|
KeysWithValue.getSchema(),
|
|
@@ -51,7 +51,7 @@ contract KeysWithValueModule is IModule, WorldContext {
|
|
|
51
51
|
|
|
52
52
|
// Register metadata for the target table
|
|
53
53
|
(string memory tableName, string[] memory fieldNames) = KeysWithValue.getMetadata();
|
|
54
|
-
|
|
54
|
+
IBaseWorld(_world()).setMetadata(
|
|
55
55
|
targetTableSelector.getNamespace(),
|
|
56
56
|
targetTableSelector.getFile(),
|
|
57
57
|
tableName,
|
|
@@ -59,7 +59,7 @@ contract KeysWithValueModule is IModule, WorldContext {
|
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
// Grant the hook access to the target table
|
|
62
|
-
|
|
62
|
+
IBaseWorld(_world()).grantAccess(targetTableSelector.getNamespace(), targetTableSelector.getFile(), address(hook));
|
|
63
63
|
|
|
64
64
|
// Register a hook that is called when a value is set in the source table
|
|
65
65
|
StoreSwitch.registerStoreHook(sourceTableId, hook);
|
|
@@ -22,8 +22,8 @@ import type {
|
|
|
22
22
|
OnEvent,
|
|
23
23
|
} from "./common";
|
|
24
24
|
|
|
25
|
-
export interface
|
|
26
|
-
contractName: "
|
|
25
|
+
export interface IBaseWorldInterface extends utils.Interface {
|
|
26
|
+
contractName: "IBaseWorld";
|
|
27
27
|
functions: {
|
|
28
28
|
"call(bytes16,bytes16,bytes)": FunctionFragment;
|
|
29
29
|
"deleteRecord(uint256,bytes32[])": FunctionFragment;
|
|
@@ -263,13 +263,13 @@ export type StoreSetRecordEvent = TypedEvent<
|
|
|
263
263
|
|
|
264
264
|
export type StoreSetRecordEventFilter = TypedEventFilter<StoreSetRecordEvent>;
|
|
265
265
|
|
|
266
|
-
export interface
|
|
267
|
-
contractName: "
|
|
266
|
+
export interface IBaseWorld extends BaseContract {
|
|
267
|
+
contractName: "IBaseWorld";
|
|
268
268
|
connect(signerOrProvider: Signer | Provider | string): this;
|
|
269
269
|
attach(addressOrName: string): this;
|
|
270
270
|
deployed(): Promise<this>;
|
|
271
271
|
|
|
272
|
-
interface:
|
|
272
|
+
interface: IBaseWorldInterface;
|
|
273
273
|
|
|
274
274
|
queryFilter<TEvent extends TypedEvent>(
|
|
275
275
|
event: TypedEventFilter<TEvent>,
|
|
@@ -1013,7 +1013,7 @@ const _abi = [
|
|
|
1013
1013
|
];
|
|
1014
1014
|
|
|
1015
1015
|
const _bytecode =
|
|
1016
|
-
"0x60806040526000805460ff191660019081179091557f66696c650000000000000000000000006e616d65737061636500000000000000601b55601c80546001600160a01b03191690911790553480156200005857600080fd5b506200006e6200007460201b62000cb21760201c565b620026f2565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152620000f09101604051602081830303815290604052620000b8906200219c565b60001c620000d3605f806200014660201b62000d2d1760201c565b620000ea601f6200021760201b62000de21760201c565b6200029a565b620001056200033b60201b62000e5a1760201c565b6200011a620003a360201b62000eaf1760201c565b6200012f6200040260201b62000f171760201c565b620001446200047360201b62000f741760201c565b565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110620001825762000182620021da565b602002602001019060c58111156200019e576200019e620021f0565b908160c5811115620001b457620001b4620021f0565b815250508281600181518110620001cf57620001cf620021da565b602002602001019060c5811115620001eb57620001eb620021f0565b908160c5811115620002015762000201620021f0565b9052506200020f81620004bd565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620002535762000253620021da565b602002602001019060c58111156200026f576200026f620021f0565b908160c5811115620002855762000285620021f0565b9052506200029381620004bd565b9392505050565b620002b56000836200069f60201b62000fca1790919060201c565b620002d06001826200069f60201b62000fca1790919060201c565b620002db836200089a565b156200031e5782620002f884620008ce60201b620011a51760201c565b60405163369db31d60e21b81526004016200031592919062002263565b60405180910390fd5b62000336838383620008fa60201b620011d01760201c565b505050565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201526200014491016040516020818303038152906040526200037e906200219c565b6200038862000aa4565b6200039262000b33565b62000b7060201b620013251760201c565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b6030820152620001449101604051602081830303815290604052620003ee906200219c565b620003f862000bff565b6200039262000c8a565b6000806200040f62000cc7565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201529294509092506200046f91015b60405160208183030381529060405262000459906200219c565b60001c838362000d6360201b620013c01760201c565b5050565b6000806200048062000db4565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b60308201529294509092506200046f91016200043f565b6000601c82511115620004e9578151604051635318beb960e01b81526004016200031591815260200190565b60008060008060005b8651811015620005fc57600062000544888381518110620005175762000517620021da565b602002602001015160c5811115620005335762000533620021f0565b62000eb260201b620014181760201c565b905061ffff811615620005865782156200057157604051633c795af960e21b815260040160405180910390fd5b836200057d8162002294565b9450506200058b565b600192505b620005978186620022b6565b9450620005f086620005ab846004620022df565b8a8581518110620005c057620005c0620021da565b602002602001015160c5811115620005dc57620005dc620021f0565b60f81b62000f7960201b620014c91760201c565b955050600101620004f2565b5060008287516200060e9190620022fa565b9050600e8160ff1611156200063c57604051635318beb960e01b815260ff8216600482015260240162000315565b620006588560008660f01b62000faf60201b620014ff1760201c565b9450620006768560028560f81b62000f7960201b620014c91760201c565b9450620006948560038360f81b62000f7960201b620014c91760201c565b979650505050505050565b80158015620006bf5750620006bf8262000fcd60201b620015351760201c565b15620006e257604051635318beb960e01b81526000600482015260240162000315565b6000620006fa8362000fd160201b620015391760201c565b60ff169050600e8111156200072657604051635318beb960e01b81526004810182905260240162000315565b60006200073e8462000ff460201b6200154a1760201c565b60ff169050601c620007518383620022df565b11156200078157620007648282620022df565b604051635318beb960e01b81526004016200031591815260200190565b60008060005b620007938585620022df565b81101562000847576000620007cf620007bb838a6200100e60201b620015561790919060201c565b60c5811115620005335762000533620021f0565b11156200080c57838110620007f757604051633c795af960e21b815260040160405180910390fd5b82620008038162002320565b9350506200083e565b838110156200082e57604051633c795af960e21b815260040160405180910390fd5b816200083a8162002320565b9250505b60010162000787565b508282146200086d57604051635318beb960e01b81526004810183905260240162000315565b8381146200089257604051635318beb960e01b81526004810182905260240162000315565b505050505050565b6000620008c7620008b6836200104a60201b620015821760201c565b62000fcd60201b620015351760201c565b1592915050565b606081604051602001620008e491815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b81600081518110620009365762000936620021da565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b60308201528151808203909301835281019052600090620009909062000989906200219c565b8362001109565b9050620009be81620009ad866200115060201b6200160a1760201c565b6200115360201b6200126f1760201c565b620009e5620009cf826020620022df565b620009ad856200115060201b6200160a1760201c565b60408051676d756473746f726560c01b602082015265736368656d6160d01b603082015260008051602062006a07833981519152910160405160208183030381529060405262000a35906200219c565b60001c8362000a4f876200115060201b6200160a1760201c565b62000a65876200115060201b6200160a1760201c565b60408051602081019390935282015260600160408051601f198184030181529082905262000a9593929162002379565b60405180910390a15050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060c38160008151811062000ae15762000ae1620021da565b602002602001019060c581111562000afd5762000afd620021f0565b908160c581111562000b135762000b13620021f0565b8152505062000b2d81620004bd60201b6200160d1760201c565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050605f8160008151811062000ae15762000ae1620021da565b62000b7a62001157565b1562000b9857620003368383836200029a60201b620018621760201c565b6040516312e6f41b60e21b81526004810184905260248101839052604481018290523390634b9bd06c906064015b600060405180830381600087803b15801562000be157600080fd5b505af115801562000bf6573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905060c58160008151811062000c3c5762000c3c620021da565b602002602001019060c581111562000c585762000c58620021f0565b908160c581111562000c6e5762000c6e620021f0565b8152505060c48160018151811062000ae15762000ae1620021da565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811062000ae15762000ae1620021da565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908162000ce35790505090506040518060400160405280600581526020016476616c756560d81b8152508160008151811062000d2f5762000d2f620021da565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b62000d6d62001157565b1562000d8b5762000336838383620011cc60201b620018cf1760201c565b604051630ba711df60e11b8152339063174e23be9062000bc6908690869086906004016200240b565b60408051600280825260608281019093528291600091816020015b606081526020019060019003908162000dcf579050509050604051806040016040528060098152602001687461626c654e616d6560b81b8152508160008151811062000e1f5762000e1f620021da565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d65730000000000000000000000008152508160018151811062000e765762000e76620021da565b6020026020010181905250806040518060400160405280600d81526020016c53746f72654d6574616461746160981b8152509092509250509091565b6000808260c581111562000eca5762000eca620021f0565b60ff169050602081101562000ee65762000293816001620022df565b604081101562000f0b57602062000eff826001620022df565b6200029391906200243a565b606081101562000f2457604062000eff826001620022df565b60608360c581111562000f3b5762000f3b620021f0565b0362000f4a5750600192915050565b60618360c581111562000f615762000f61620021f0565b0362000f705750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c6001600160f01b031990911c198416179392505050565b1590565b600062000feb8260036200128560201b620015671760201c565b60f81c92915050565b600062000feb8260026200128560201b620015671760201c565b6000620010338362001022846004620022df565b6200128560201b620015671760201c565b60f81c60c5811115620002935762000293620021f0565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110620010895762001089620021da565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b60308201528151808203909301835281019052600090620010f190620010dc906200219c565b60001c836200110960201b620019731760201c565b90506200020f816200128c60201b620019c91760201c565b6000600080516020620069e78339815191528383604051602001620011319392919062002454565b60408051601f1981840301815291905280516020909101209392505050565b90565b9055565b6000303b8082036200116b57600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015620011a557600080fd5b505afa925050508015620011b7575060015b620011c457600091505090565b600191505090565b6000620011d98462001290565b9050815160001480620012045750620011fd81620012ff60201b620019cd1760201c565b60ff168251145b62001246576200121f81620012ff60201b620019cd1760201c565b825160405163f2b2755960e01b815260ff9092166004830152602482015260440162000315565b6200127f8484846040516020016200125f919062002475565b6040516020818303038152906040526200132960201b620019eb1760201c565b50505050565b6008021b90565b5490565b6000620012a8826200104a60201b620015821760201c565b9050620012c08162000fcd60201b620015351760201c565b15620012fa5781620012dd83620008ce60201b620011a51760201c565b6040516304cb85c760e21b81526004016200031592919062002263565b919050565b60006200130c8262000fd1565b620013178362000ff4565b6200132391906200248a565b92915050565b6000620013378383620013eb565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b81600081518110620013775762001377620021da565b60209081029190910181019190915260408051676d756473746f726560c01b818401526c53746f72654d6574616461746160981b60308201528151808203909301835281019052620013e490620013ce906200219c565b60001c8284620014cb60201b62001aa61760201c565b5050505050565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110620014285762001428620021da565b602002602001019061ffff16908161ffff1681525050825181600181518110620014565762001456620021da565b602002602001019061ffff16908161ffff1681525050600062001484826200151c60201b62001afe1760201c565b90506200149c816200115060201b6200160a1760201c565b8585604051602001620014b293929190620024b2565b6040516020818303038152906040529250505092915050565b620014d562001157565b15620014f35762000336838383620015d560201b62001bdb1760201c565b60405163328d068d60e11b8152339063651a0d1a9062000bc69086908690869060040162002379565b6000806000805b8451811015620015b8576200157d836200153f836002620024f3565b6200154c906004620022df565b878481518110620015615762001561620021da565b602002602001015160f01b62000faf60201b620014ff1760201c565b9250848181518110620015945762001594620021da565b602002602001015161ffff1682620015ad919062002515565b915060010162001523565b506200020f8260008360e01b6200190760201b62001e301760201c565b6000620015e28462001290565b90506000620015fc826200192560201b62001e661760201c565b905060008190506000806200161c8562000fd160201b620015391760201c565b60ff16111562001671576200163d85846200192b60201b62001e6c1760201c565b905062001655816200193360201b62001e741760201c565b62001662906020620022df565b6200166e9083620022df565b91505b84518214620016a157845160405163521b3d3360e01b815262000315918491600401918252602082015260400190565b60008051602062006a07833981519152878787604051620016c59392919062002379565b60405180910390a16000620016e88860001b6200193960201b62001e7a1760201c565b905060005b8151811015620017955760008282815181106200170e576200170e620021da565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b81526004016200174a9392919062002379565b600060405180830381600087803b1580156200176557600080fd5b505af11580156200177a573d6000803e3d6000fd5b505050505080806200178c9062002320565b915050620016ed565b506000620017af89896200110960201b620019731760201c565b90506000620017c98862001a1060201b62001f281760201c565b9050620017e5826000838962001a1660201b62001f2e1760201c565b620017f2866020620022df565b620017fe9082620022df565b9050620018168762000fd160201b620015391760201c565b60ff166000036200182d5750505050505050505050565b6000620018468b8b62001afe60201b62001fec1760201c565b90506200186381620009ad876200115060201b6200160a1760201c565b60008060005b6200187f8b62000fd160201b620015391760201c565b60ff168160ff161015620018f757620018a58e8e8362001b2660201b620020231760201c565b9250620018c48160ff168962001b7060201b6200207c1790919060201c565b9150620018e0836000878562001a1660201b62001f2e1760201c565b620018ec8286620022df565b945060010162001869565b5050505050505050505050505050565b6008820281811c6001600160e01b031990911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620019765762001976620021da565b60209081029190910181019190915260408051676d756473746f726560c01b8184015264486f6f6b7360d81b60308201528151808203909301835281019052600090620019df90620019c8906200219c565b60001c83600062001bb160201b620020ae1760201c565b90506200020f620019ff826000845162001c5460201b620021541760201c565b62001cca60201b620021e41760201c565b60200190565b60208304840193506020838162001a315762001a3162002537565b069250821562001a9f576000836020039050600062001a5b8362001ce860201b620021f51760201c565b90506008850281811c91508451811c905081198754168282161787555081831162001a885750506200127f565b62001a95600187620022df565b9550509182019190035b6020811062001acc578151845562001ab9600185620022df565b935060209190910190601f190162001a9f565b80156200127f57600062001aeb8262001ce860201b620021f51760201c565b8554845182169119161785555050505050565b6000600080516020620069e7833981519152838360405160200162001131939291906200254d565b6000600080516020620069e783398151915284848460405160200162001b50949392919062002598565b60408051601f198184030181529190528051602090910120949350505050565b60008062001b80836002620024f3565b62001b8d906004620022df565b905062001ba684826200128560201b620015671760201c565b60f01c949350505050565b606062001bbd62001157565b1562001be35762001bdb84848462001cf560201b620022021760201c565b905062000293565b604051636a50093760e11b8152339063d4a0126e9062001c0c90879087908790600401620025cd565b600060405180830381865afa15801562001c2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001bdb9190810190620025fb565b600081831115801562001c68575083518211155b62001c8e578383836040516323230fa360e01b81526004016200031593929190620026a8565b6020840162001c9e8482620022df565b9050600062001cae85856200243a565b6001600160801b031660809290921b9190911795945050505050565b6060600062000293836014600062001d1d60201b6200221d1760201c565b60001960089091021c1990565b6060600062001d048562001290565b905062001d148585858462001e68565b95945050505050565b6060600062001d378562001ec860201b620023601760201c565b9050600062001d518662001ece60201b620023661760201c565b905060008462001d7c5762001d68866008620024f3565b62001d76906101006200243a565b62001d7f565b60005b9050600086838162001d955762001d9562002537565b04905062001da48784620026cf565b1562001e195760405162461bcd60e51b815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a65000000606482015260840162000315565b602080820201604051955080860160405250808552600060208601855b8383101562001e5a578051851c825260019290920191602090910190890162001e36565b505050505050509392505050565b606062001e808262000ff460201b6200154a1760201c565b60ff168360ff16101562001eaf5762001ea78585858562001eda60201b6200237b1760201c565b90506200020f565b62001ea78585858562001f5f60201b620023db1760201c565b60801c90565b6001600160801b031690565b6060600062001efb8460ff16846200100e60201b620015561790919060201c565b9050600062001f188260c5811115620005335762000533620021f0565b9050600062001f28888862001109565b9050600062001f38868862001fe7565b905062001f528284836200204160201b620024341760201c565b9998505050505050505050565b6060600062001f798362000ff460201b6200154a1760201c565b62001f859085620022fa565b9050600062001f9687878462001b26565b9050600062001fc260ff841662001fae8a8a6200209e565b62001b7060201b6200207c1790919060201c565b905062001fdb8282620020ad60201b620024941760201c565b98975050505050505050565b600080805b8360ff16811015620020395762002016620007bb82876200100e60201b620015561790919060201c565b620020229083620022df565b915080620020308162002320565b91505062001fec565b509392505050565b6060826001600160401b038111156200205e576200205e620021c4565b6040519080825280601f01601f19166020018201604052801562002089576020820181803683370190505b509050602081016200203985858584620020bd565b600080620010f1848462001afe565b6060620002938383600062002041565b602082048401935060208281620020d857620020d862002537565b06915081156200213e5760008260200390506000620021028262001ce860201b620021f51760201c565b90508554600885021b811984511682821617845250818511620021275750506200127f565b62002134600187620022df565b9550509283900392015b602083106200216a578354815262002158600185620022df565b9350601f19909201916020016200213e565b82156200127f576000620021898462001ce860201b620021f51760201c565b8251865482169119161782525050505050565b80516020808301519190811015620021be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b838110156200222357818101518382015260200162002209565b838111156200127f5750506000910152565b600081518084526200224f81602086016020860162002206565b601f01601f19169290920160200192915050565b8281526040602082015260006200020f604083018462002235565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103620022ad57620022ad6200227e565b60010192915050565b600061ffff808316818516808303821115620022d657620022d66200227e565b01949350505050565b60008219821115620022f557620022f56200227e565b500190565b600060ff821660ff8416808210156200231757620023176200227e565b90039392505050565b6000600182016200233557620023356200227e565b5060010190565b600081518084526020808501945080840160005b838110156200236e5781518752958201959082019060010162002350565b509495945050505050565b8381526060602082015260006200239460608301856200233c565b8281036040840152620023a8818562002235565b9695505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015620023fe578284038952620023eb84835162002235565b98850198935090840190600101620023d0565b5091979650505050505050565b83815260606020820152600062002426606083018562002235565b8281036040840152620023a88185620023b2565b6000828210156200244f576200244f6200227e565b500390565b83815282602082015260606040820152600062001d1460608301846200233c565b602081526000620002936020830184620023b2565b600060ff821660ff84168060ff03821115620024aa57620024aa6200227e565b019392505050565b83815260008351620024cc81602085016020880162002206565b80830190508351620024e681602084016020880162002206565b0160200195945050505050565b60008160001904831182151516156200251057620025106200227e565b500290565b600063ffffffff808316818516808303821115620022d657620022d66200227e565b634e487b7160e01b600052601260045260246000fd5b8381528260208201526080604082015260006200256e60808301846200233c565b828103606084015260068152650d8cadccee8d60d31b602082015260408101915050949350505050565b848152836020820152608060408201526000620025b960808301856200233c565b905060ff8316606083015295945050505050565b838152606060208201526000620025e860608301856200233c565b905060ff83166040830152949350505050565b6000602082840312156200260e57600080fd5b81516001600160401b03808211156200262657600080fd5b818401915084601f8301126200263b57600080fd5b815181811115620026505762002650620021c4565b604051601f8201601f19908116603f011681019083821181831017156200267b576200267b620021c4565b816040528281528760208487010111156200269557600080fd5b6200069483602083016020880162002206565b606081526000620026bd606083018662002235565b60208301949094525060400152919050565b600082620026ed57634e487b7160e01b600052601260045260246000fd5b500690565b6142e580620027026000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c8063916a17c6116100ee578063ba414fa611610097578063d99ddc0711610071578063d99ddc07146102e7578063e20c9f71146102fa578063e426a06214610302578063fa7626d41461031557600080fd5b8063ba414fa6146102b4578063cd9847bc146102cc578063d4a0126e146102d457600080fd5b8063a2d3d4fb116100c8578063a2d3d4fb1461028c578063a5c2f007146101bb578063b5508aa9146102ac57600080fd5b8063916a17c61461027657806391c45d2214610230578063971eb6cb1461027e57600080fd5b80633f7286f411610150578063651a0d1a1161012a578063651a0d1a1461023e57806366d9a9a01461024c57806385226c811461026157600080fd5b80633f7286f41461021a5780634b9bd06c1461022257806351ea4f1b1461023057600080fd5b80631ed7831c116101815780631ed7831c146101d35780632b26fb29146101f15780633e5e3c231461021257600080fd5b806307ff106e146101a85780630a9254e4146101bd578063174e23be146101c5575b600080fd5b6101bb6101b63660046137c7565b610322565b005b6101bb610354565b6101bb6101b6366004613891565b6101db61039b565b6040516101e8919061390b565b60405180910390f35b6102046101ff366004613958565b6103fd565b6040519081526020016101e8565b6101db61040e565b6101db61046e565b6101bb6101b6366004613971565b6101bb6101b63660046139ae565b6101bb6101b6366004613a3b565b6102546104ce565b6040516101e89190613aa4565b6102696105d2565b6040516101e89190613c3a565b6102546106a2565b6101bb6101b6366004613c4d565b61029f61029a366004613c99565b61079d565b6040516101e89190613cec565b6102696107e7565b6102bc6108b7565b60405190151581526020016101e8565b6101bb6109f9565b61029f6102e2366004613cff565b610bbf565b61029f6102f5366004613c4d565b610c00565b6101db610c47565b610204610310366004613958565b610ca7565b6000546102bc9060ff1681565b6040517fbf834eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61035c6124a2565b610364612500565b601b546103749060801b3061255e565b601b546103999060801b6fffffffffffffffffffffffffffffffff191630600161264d565b565b6060600d8054806020026020016040519081016040528092919081815260200182805480156103f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103d5575b5050505050905090565b600061040882612729565b92915050565b6060600f8054806020026020016040519081016040528092919081815260200182805480156103f3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103d5575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156103f3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103d5575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156105c95760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156105b157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161055e5790505b505050505081525050815260200190600101906104f2565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156105c957838290600052602060002001805461061590613d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461064190613d5d565b801561068e5780601f106106635761010080835404028352916020019161068e565b820191906000526020600020905b81548152906001019060200180831161067157829003601f168201915b5050505050815260200190600101906105f6565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156105c95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561078557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107325790505b505050505081525050815260200190600101906106c6565b60606107de85858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612779915050565b95945050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156105c957838290600052602060002001805461082a90613d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461085690613d5d565b80156108a35780601f10610878576101008083540402835291602001916108a3565b820191906000526020600020905b81548152906001019060200180831161088657829003601f168201915b50505050508152602001906001019061080b565b60008054610100900460ff16156108d75750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109f45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909161097c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613d97565b60408051601f198184030181529082905261099691613ddf565b6000604051808303816000865af19150503d80600081146109d3576040519150601f19603f3d011682016040523d82523d6000602084013e6109d8565b606091505b50915050808060200190518101906109f09190613dfb565b9150505b919050565b601b54601c54610a2a91610a2591608082811b92600160801b9004901b906001600160a01b03166128de565b612926565b601b54610a5b9060801b6fffffffffffffffffffffffffffffffff19165b601c546001600160a01b0316600161264d565b601b54601c54610a8c91610a8791608082811b92600160801b9004901b906001600160a01b03166128de565b612933565b601b54610abd9060801b6fffffffffffffffffffffffffffffffff19165b601c546001600160a01b0316600061264d565b601b54601c54610ae991610a2591608082811b92600160801b9004901b906001600160a01b03166128de565b601b54610b2890600160801b81046fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff191617610a48565b601b54601c54610b5491610a8791608082811b92600160801b9004901b906001600160a01b03166128de565b601b54610b9390600160801b81046fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff191617610aaa565b601b54601c5461039991610a2591608082811b92600160801b9004901b906001600160a01b03166128de565b60606107de85858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612202915050565b6060610c3f848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506129a792505050565b949350505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156103f3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103d5575050505050905090565b6000610408826129c1565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152610d0d9101604051602081830303815290604052610cf390613e1d565b610cfe605f80610d2d565b610d08601f610de2565b611862565b610d15610e5a565b610d1d610eaf565b610d25610f17565b610399610f74565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610d6657610d66613e57565b602002602001019060c5811115610d7f57610d7f613e6d565b908160c5811115610d9257610d92613e6d565b815250508281600181518110610daa57610daa613e57565b602002602001019060c5811115610dc357610dc3613e6d565b908160c5811115610dd657610dd6613e6d565b905250610c3f8161160d565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610e1b57610e1b613e57565b602002602001019060c5811115610e3457610e34613e6d565b908160c5811115610e4757610e47613e6d565b905250610e538161160d565b9392505050565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201526103999101604051602081830303815290604052610e9a90613e1d565b610ea26129cc565b610eaa612a44565b611325565b60408051676d756473746f726560c01b60208201527f53746f72654d657461646174610000000000000000000000000000000000000060308201526103999101604051602081830303815290604052610f0790613e1d565b610f0f612a7e565b610eaa612afd565b600080610f22612b37565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152929450909250610f7091015b604051602081830303815290604052610f6990613e1d565b83836113c0565b5050565b600080610f7f612be7565b60408051676d756473746f726560c01b60208201527f53746f72654d65746164617461000000000000000000000000000000000000006030820152929450909250610f709101610f51565b80158015610fd6575081155b15610ffc57604051635318beb960e01b8152600060048201526024015b60405180910390fd5b600061100783611539565b60ff169050600e81111561103157604051635318beb960e01b815260048101829052602401610ff3565b600061103c8461154a565b60ff169050601c61104d8383613e99565b11156110795761105d8282613e99565b604051635318beb960e01b8152600401610ff391815260200190565b60008060005b6110898585613e99565b8110156111565760006110b561109f8984611556565b60c58111156110b0576110b0613e6d565b611418565b1115611106578381106110f4576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826110fe81613eb1565b93505061114e565b83811015611140576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161114a81613eb1565b9250505b60010161107f565b5082821461117a57604051635318beb960e01b815260048101839052602401610ff3565b83811461119d57604051635318beb960e01b815260048101829052602401610ff3565b505050505050565b6060816040516020016111ba91815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b8160008151811061120957611209613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b603083015260009161126591015b60405160208183030381529060405261125f90613e1d565b83611973565b8481559050611273565b9055565b611286611281826020613e99565b849055565b60408051676d756473746f726560c01b602082015265736368656d6160d01b60308201527f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f91016040516020818303038152906040526112e590613e1d565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611316939291613f06565b60405180910390a15050505050565b61132d612d02565b156113425761133d838383611862565b505050565b6040517f4b9bd06c0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290523390634b9bd06c906064015b600060405180830381600087803b1580156113a357600080fd5b505af11580156113b7573d6000803e3d6000fd5b50505050505050565b6113c8612d02565b156113d85761133d8383836118cf565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be9061138990869086908690600401613f3b565b6000808260c581111561142d5761142d613e6d565b60ff169050602081101561144657610e53816001613e99565b604081101561146657602061145c826001613e99565b610e539190613f66565b606081101561147c57604061145c826001613e99565b60608360c581111561149057611490613e6d565b0361149e5750600192915050565b60618360c58111156114b2576114b2613e6d565b036114c05750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b1590565b6000601882901b5b60f81c92915050565b6000601082901b611541565b600061156e83611567846004613e99565b6008021b90565b60f81c60c5811115610e5357610e53613e6d565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b816000815181106115be576115be613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b60308301526000916116009101611247565b9050610c3f815490565b90565b6000601c82511115611637578151604051635318beb960e01b8152600401610ff391815260200190565b60008060008060005b865181101561175e57600061167988838151811061166057611660613e57565b602002602001015160c58111156110b0576110b0613e6d565b905061ffff8116156116cf5782156116bd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836116c781613f7d565b9450506116d4565b600192505b6116de8186613f9c565b9450611753866116ef846004613e99565b8a858151811061170157611701613e57565b602002602001015160c581111561171a5761171a613e6d565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101611640565b50600082875161176e9190613fc2565b9050600e8160ff16111561179a57604051635318beb960e01b815260ff82166004820152602401610ff3565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b61186d826000610fca565b611878816001610fca565b61188183612d73565b156118c45782611890846111a5565b6040517fda76cc74000000000000000000000000000000000000000000000000000000008152600401610ff3929190613fe5565b61133d8383836111d0565b60006118da84612729565b90508151600014806118f757506118f0816119cd565b60ff168251145b61194357611904816119cd565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff90921660048301526024820152604401610ff3565b61196d8484846040516020016119599190613c3a565b6040516020818303038152906040526119eb565b50505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016119aa93929190613ffe565b60408051601f1981840301815291905280516020909101209392505050565b5490565b60006119d882611539565b6119e18361154a565b610408919061401d565b60006119f78383612d88565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b81600081518110611a3457611a34613e57565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d657461646174610000000000000000000000000000000000000060308201528151808203909301835281019052611a9f90611a9890613e1d565b8284611aa6565b5050505050565b611aae612d02565b15611abe5761133d838383611bdb565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a9061138990869086908690600401613f06565b6000806000805b8451811015611bb057611b7b83611b1d836002614042565b611b28906004613e99565b878481518110611b3a57611b3a613e57565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110611b8f57611b8f613e57565b602002602001015161ffff1682611ba69190614061565b9150600101611b05565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17610c3f565b6000611be684612729565b90506000611bf48260f01c90565b905080600080611c0385611539565b60ff161115611c3157506020848301015160e081901c611c24906020613e99565b611c2e9083613e99565b91505b84518214611c785784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610ff3918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f878787604051611cab93929190613f06565b60405180910390a16000611cbe88611e7a565b905060005b8151811015611d60576000828281518110611ce057611ce0613e57565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b8152600401611d1a93929190613f06565b600060405180830381600087803b158015611d3457600080fd5b505af1158015611d48573d6000803e3d6000fd5b50505050508080611d5890613eb1565b915050611cc3565b506000611d6d8989611973565b905060208701611d808260008389611f2e565b611d8b866020613e99565b611d959082613e99565b9050611da087611539565b60ff16600003611db65750505050505050505050565b6000611dc28b8b611fec565b858155905060008060005b611dd68b611539565b60ff168160ff161015611e2057611dee8e8e83612023565b9250611dfd8860ff831661207c565b9150611e0c8360008785611f2e565b611e168286613e99565b9450600101611dcd565b5050505050505050505050505050565b6008820281811c7fffffffff0000000000000000000000000000000000000000000000000000000090911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611eb457611eb4613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925264486f6f6b7360d81b6030830152600091611f1191015b604051602081830303815290604052611f0990613e1d565b8360006120ae565b9050610c3f611f238260008451612154565b6121e4565b60200190565b602083048401935060208381611f4657611f46614080565b0692508215611f9f5760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611f8a57505061196d565b611f95600187613e99565b9550509182019190035b60208110611fc85781518455611fb6600185613e99565b935060209190910190601f1901611f9f565b801561196d576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016119aa93929190614096565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d984848460405160200161205c94939291906140f6565b60408051601f198184030181529190528051602090910120949350505050565b60008061208a836002614042565b612095906004613e99565b90506120a384826008021b90565b60f01c949350505050565b60606120b8612d02565b156120cf576120c8848484612202565b9050610e53565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e9061210f90879087908790600401614129565b600060405180830381865afa15801561212c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c89190810190614155565b6000818311158015612167575083518211155b6121a3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610ff3939291906141f7565b602084016121b18482613e99565b905060006121bf8585613f66565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610e53836014600061221d565b60001960089091021c1990565b6060600061220f85612729565b90506107de85858584612e3e565b6060600061222b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008461226357612252866008614042565b61225e90610100613f66565b612266565b60005b9050600086838161227957612279614080565b049050612286878461421c565b15612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610ff3565b602080820201604051955080860160405250808552600060208601855b83831015612352578051851c8252600192909201916020909101908901612330565b505050505050509392505050565b60801c90565b6fffffffffffffffffffffffffffffffff1690565b6060600061238c8360ff8616611556565b905060006123a58260c58111156110b0576110b0613e6d565b905060006123b38888611973565b905060006123c18688612e75565b90506123ce828483612434565b9998505050505050505050565b606060006123e88361154a565b6123f29085613fc2565b90506000612401878784612023565b9050600061241c8360ff166124168a8a612eb0565b9061207c565b90506124288282612494565b98975050505050505050565b60608267ffffffffffffffff81111561244f5761244f613e41565b6040519080825280601f01601f191660200182016040528015612479576020820181803683370190505b5090506020810161248c85858584612ebd565b509392505050565b6060610e5383836000612434565b60408051600060208201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261039991016040516020818303038152906040526124f090613e1d565b6124f8612f72565b610eaa612fac565b60408051600060208201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152610399910160405160208183030381529060405261254e90613e1d565b61255661302b565b610eaa613065565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff1916816000815181106125a7576125a7613e57565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905261133d9061260190613e1d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015283906000906034015b60405160208183030381529060405261309f565b604080516002808252606082018352600092602083019080368337019050509050838160008151811061268257612682613e57565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106126b4576126b4613e57565b602090810291909101810191909152604080516000818401527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261196d9061270e90613e1d565b60405184151560f81b60208201528390600090602101612639565b600061273482611582565b9050806109f45781612745836111a5565b6040517f132e171c000000000000000000000000000000000000000000000000000000008152600401610ff3929190613fe5565b606060006127878360f01c90565b90508060008061279686611539565b60ff16905080156127e1576127ab8888612eb0565b915060006127b98360e01c90565b11156127e1576127c98260e01c90565b6127d4906020613e99565b6127de9084613e99565b92505b60008367ffffffffffffffff8111156127fc576127fc613e41565b6040519080825280601f01601f191660200182016040528015612826576020820181803683370190505b509050602081016128398a8a8884613137565b6128438460e01c90565b60000361285757509450610e539350505050565b6128618682613e99565b8481529050612871602082613e99565b905060005b838160ff1610156128cf57600061288e8c8c84612023565b9050600061289f8760ff851661207c565b90506128ae8282600087612ebd565b6128b88185613e99565b9350505080806128c790613f7d565b915050612876565b50909998505050505050505050565b60006128fe6fffffffffffffffffffffffffffffffff1985165b83613158565b80610c3f5750610c3f6fffffffffffffffffffffffffffffffff198516608085901c176128f8565b6129308115612933565b50565b80612930577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516129979060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161293061321e565b606060006129b484612729565b9050610c3f848483612779565b60006127348261335e565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110612a0657612a06613e57565b602002602001019060c5811115612a1f57612a1f613e6d565b908160c5811115612a3257612a32613e6d565b905250612a3e8161160d565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110612a0657612a06613e57565b6040805160028082526060820183526000928392919060208301908036833701905050905060c581600081518110612ab857612ab8613e57565b602002602001019060c5811115612ad157612ad1613e6d565b908160c5811115612ae457612ae4613e6d565b8152505060c481600181518110612a0657612a06613e57565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110612a0657612a06613e57565b6040805160018082528183019092526060918291600091816020015b6060815260200190600190039081612b535790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110612bb357612bb3613e57565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081612c025790505090506040518060400160405280600981526020017f7461626c654e616d65000000000000000000000000000000000000000000000081525081600081518110612c6257612c62613e57565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600181518110612cb657612cb6613e57565b6020026020010181905250806040518060400160405280600d81526020017f53746f72654d65746164617461000000000000000000000000000000000000008152509092509250509091565b6000303b808203612d1557600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015612d4e57600080fd5b505afa925050508015612d5f575060015b612d6b57600091505090565b600191505090565b6000612d8161153583611582565b1592915050565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110612dc257612dc2613e57565b602002602001019061ffff16908161ffff1681525050825181600181518110612ded57612ded613e57565b602002602001019061ffff16908161ffff16815250506000612e0e82611afe565b9050808585604051602001612e259392919061423e565b6040516020818303038152906040529250505092915050565b6060612e498261154a565b60ff168360ff161015612e6957612e628585858561237b565b9050610c3f565b612e62858585856123db565b600080805b8360ff1681101561248c57612e9261109f8683611556565b612e9c9083613e99565b915080612ea881613eb1565b915050612e7a565b6000806116008484611fec565b602082048401935060208281612ed557612ed5614080565b0691508115612f265760208290036000600019600883021c1990508554600885021b811984511682821617845250818511612f1157505061196d565b612f1c600187613e99565b9550509283900392015b60208310612f4e5783548152612f3d600185613e99565b9350601f1990920191602001612f26565b821561196d576000600019600885021c198251865482169119161782525050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110612a0657612a06613e57565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110612fe657612fe6613e57565b602002602001019060c5811115612fff57612fff613e6d565b908160c581111561301257613012613e6d565b81525050606181600181518110612a0657612a06613e57565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110612a0657612a06613e57565b60408051600180825281830190925260009182919060208083019080368337019050509050604f81600081518110612a0657612a06613e57565b6130a7612d02565b156130bd576130b8848484846133ec565b61196d565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d22906130ff90879087908790879060040161427b565b600060405180830381600087803b15801561311957600080fd5b505af115801561312d573d6000803e3d6000fd5b5050505050505050565b811561196d5760006131498585611973565b9050611a9f8184600085612ebd565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061319157613191613e57565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106131c3576131c3613e57565b6020908102919091018101919091526040805160009281018390527f5265736f75726365416363657373000000000000000000000000000000000000603082015261320e9101611ef1565b602081015190915060f81c6107de565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156133305760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526132cf9291602001613d97565b60408051601f19818403018152908290526132e991613ddf565b6000604051808303816000865af19150503d8060008114613326576040519150601f19603f3d011682016040523d82523d6000602084013e61332b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b8160008151811061339a5761339a613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b60308301526000916133dc9101611247565b9050610c3f6119c9826020613e99565b60006133f785612729565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce8585858560405161342e949392919061427b565b60405180910390a1600061344186611e7a565b905060005b81518110156134e557600082828151811061346357613463613e57565b60200260200101519050806001600160a01b031663f58a28f7898989896040518563ffffffff1660e01b815260040161349f949392919061427b565b600060405180830381600087803b1580156134b957600080fd5b505af11580156134cd573d6000803e3d6000fd5b505050505080806134dd90613eb1565b915050613446565b506134ef8261154a565b60ff168460ff16101561350e5761350986868487876135bd565b61351b565b61351b8686848787613663565b60005b81518110156113b757600082828151811061353b5761353b613e57565b60200260200101519050806001600160a01b0316631cd68a1a898989896040518563ffffffff1660e01b8152600401613577949392919061427b565b600060405180830381600087803b15801561359157600080fd5b505af11580156135a5573d6000803e3d6000fd5b505050505080806135b590613eb1565b91505061351e565b60006135cc8460ff8516611556565b905081516135e58260c58111156110b0576110b0613e6d565b1461363c576135ff8160c58111156110b0576110b0613e6d565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610ff3565b60006136488787611973565b905060006136568686612e75565b905061312d8282866136a0565b600061366e8461154a565b6136789084613fc2565b905061368786868385516136b5565b6000613694878784612023565b90506113b781846136e7565b600060208201905061196d8484838551611f2e565b60006136c18585611fec565b905060006136cd825490565b90506136dd8160ff8616856136f3565b808355905061119d565b610f70826000836136a0565b600083816137018260e01c90565b90506000613712878760ff1661207c565b9050808510613736576137258186613f66565b61372f9083613e99565b915061374d565b6137408582613f66565b61374a9083613f66565b91505b600061375a876002614042565b613765906004613e99565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c17612428565b600080604083850312156137da57600080fd5b8235915060208301356001600160a01b03811681146137f857600080fd5b809150509250929050565b60008083601f84011261381557600080fd5b50813567ffffffffffffffff81111561382d57600080fd5b60208301915083602082850101111561384557600080fd5b9250929050565b60008083601f84011261385e57600080fd5b50813567ffffffffffffffff81111561387657600080fd5b6020830191508360208260051b850101111561384557600080fd5b6000806000806000606086880312156138a957600080fd5b85359450602086013567ffffffffffffffff808211156138c857600080fd5b6138d489838a01613803565b909650945060408801359150808211156138ed57600080fd5b506138fa8882890161384c565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561394c5783516001600160a01b031683529284019291840191600101613927565b50909695505050505050565b60006020828403121561396a57600080fd5b5035919050565b60008060006060848603121561398657600080fd5b505081359360208301359350604090920135919050565b803560ff811681146109f457600080fd5b600080600080600080608087890312156139c757600080fd5b86359550602087013567ffffffffffffffff808211156139e657600080fd5b6139f28a838b0161384c565b9097509550859150613a0660408a0161399d565b94506060890135915080821115613a1c57600080fd5b50613a2989828a01613803565b979a9699509497509295939492505050565b600080600080600060608688031215613a5357600080fd5b85359450602086013567ffffffffffffffff80821115613a7257600080fd5b613a7e89838a0161384c565b90965094506040880135915080821115613a9757600080fd5b506138fa88828901613803565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015613b7e578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015613b695783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190613b27565b50978a01979550505091870191600101613acc565b50919998505050505050505050565b60005b83811015613ba8578181015183820152602001613b90565b8381111561196d5750506000910152565b60008151808452613bd1816020860160208601613b8d565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015613c2d578284038952613c1b848351613bb9565b98850198935090840190600101613c03565b5091979650505050505050565b602081526000610e536020830184613be5565b600080600060408486031215613c6257600080fd5b83359250602084013567ffffffffffffffff811115613c8057600080fd5b613c8c8682870161384c565b9497909650939450505050565b60008060008060608587031215613caf57600080fd5b84359350602085013567ffffffffffffffff811115613ccd57600080fd5b613cd98782880161384c565b9598909750949560400135949350505050565b602081526000610e536020830184613bb9565b60008060008060608587031215613d1557600080fd5b84359350602085013567ffffffffffffffff811115613d3357600080fd5b613d3f8782880161384c565b9094509250613d5290506040860161399d565b905092959194509250565b600181811c90821680613d7157607f821691505b602082108103613d9157634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251613dd1816004850160208701613b8d565b919091016004019392505050565b60008251613df1818460208701613b8d565b9190910192915050565b600060208284031215613e0d57600080fd5b81518015158114610e5357600080fd5b80516020808301519190811015613d915760001960209190910360031b1b16919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613eac57613eac613e83565b500190565b60006000198203613ec457613ec4613e83565b5060010190565b600081518084526020808501945080840160005b83811015613efb57815187529582019590820190600101613edf565b509495945050505050565b838152606060208201526000613f1f6060830185613ecb565b8281036040840152613f318185613bb9565b9695505050505050565b838152606060208201526000613f546060830185613bb9565b8281036040840152613f318185613be5565b600082821015613f7857613f78613e83565b500390565b600060ff821660ff8103613f9357613f93613e83565b60010192915050565b600061ffff808316818516808303821115613fb957613fb9613e83565b01949350505050565b600060ff821660ff841680821015613fdc57613fdc613e83565b90039392505050565b828152604060208201526000610c3f6040830184613bb9565b8381528260208201526060604082015260006107de6060830184613ecb565b600060ff821660ff84168060ff0382111561403a5761403a613e83565b019392505050565b600081600019048311821515161561405c5761405c613e83565b500290565b600063ffffffff808316818516808303821115613fb957613fb9613e83565b634e487b7160e01b600052601260045260246000fd5b8381528260208201526080604082015260006140b56080830184613ecb565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b8481528360208201526080604082015260006141156080830185613ecb565b905060ff8316606083015295945050505050565b8381526060602082015260006141426060830185613ecb565b905060ff83166040830152949350505050565b60006020828403121561416757600080fd5b815167ffffffffffffffff8082111561417f57600080fd5b818401915084601f83011261419357600080fd5b8151818111156141a5576141a5613e41565b604051601f8201601f19908116603f011681019083821181831017156141cd576141cd613e41565b816040528281528760208487010111156141e657600080fd5b611857836020830160208801613b8d565b60608152600061420a6060830186613bb9565b60208301949094525060400152919050565b60008261423957634e487b7160e01b600052601260045260246000fd5b500690565b83815260008351614256816020850160208801613b8d565b8083019050835161426e816020840160208801613b8d565b0160200195945050505050565b8481526080602082015260006142946080830186613ecb565b60ff8516604084015282810360608401526118578185613bb956fea264697066735822122002eae19c70cf193c62afba8a0ceb5ffecf2d71fd1047d44ec330b81adc7bce9a64736f6c634300080d003386425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d989c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f";
|
|
1016
|
+
"0x60806040526000805460ff191660019081179091557f66696c650000000000000000000000006e616d65737061636500000000000000601b55601c80546001600160a01b03191690911790553480156200005857600080fd5b506200006e6200007460201b62000cb21760201c565b620026f2565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152620000f09101604051602081830303815290604052620000b8906200219c565b60001c620000d3605f806200014660201b62000d2d1760201c565b620000ea601f6200021760201b62000de21760201c565b6200029a565b620001056200033b60201b62000e5a1760201c565b6200011a620003a360201b62000eaf1760201c565b6200012f6200040260201b62000f171760201c565b620001446200047360201b62000f741760201c565b565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110620001825762000182620021da565b602002602001019060c58111156200019e576200019e620021f0565b908160c5811115620001b457620001b4620021f0565b815250508281600181518110620001cf57620001cf620021da565b602002602001019060c5811115620001eb57620001eb620021f0565b908160c5811115620002015762000201620021f0565b9052506200020f81620004bd565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620002535762000253620021da565b602002602001019060c58111156200026f576200026f620021f0565b908160c5811115620002855762000285620021f0565b9052506200029381620004bd565b9392505050565b620002b56000836200069f60201b62000fca1790919060201c565b620002d06001826200069f60201b62000fca1790919060201c565b620002db836200089a565b156200031e5782620002f884620008ce60201b620011a51760201c565b60405163369db31d60e21b81526004016200031592919062002263565b60405180910390fd5b62000336838383620008fa60201b620011d01760201c565b505050565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201526200014491016040516020818303038152906040526200037e906200219c565b6200038862000aa4565b6200039262000b33565b62000b7060201b620013251760201c565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b6030820152620001449101604051602081830303815290604052620003ee906200219c565b620003f862000bff565b6200039262000c8a565b6000806200040f62000cc7565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201529294509092506200046f91015b60405160208183030381529060405262000459906200219c565b60001c838362000d6360201b620013c01760201c565b5050565b6000806200048062000db4565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b60308201529294509092506200046f91016200043f565b6000601c82511115620004e9578151604051635318beb960e01b81526004016200031591815260200190565b60008060008060005b8651811015620005fc57600062000544888381518110620005175762000517620021da565b602002602001015160c5811115620005335762000533620021f0565b62000eb260201b620014181760201c565b905061ffff811615620005865782156200057157604051633c795af960e21b815260040160405180910390fd5b836200057d8162002294565b9450506200058b565b600192505b620005978186620022b6565b9450620005f086620005ab846004620022df565b8a8581518110620005c057620005c0620021da565b602002602001015160c5811115620005dc57620005dc620021f0565b60f81b62000f7960201b620014c91760201c565b955050600101620004f2565b5060008287516200060e9190620022fa565b9050600e8160ff1611156200063c57604051635318beb960e01b815260ff8216600482015260240162000315565b620006588560008660f01b62000faf60201b620014ff1760201c565b9450620006768560028560f81b62000f7960201b620014c91760201c565b9450620006948560038360f81b62000f7960201b620014c91760201c565b979650505050505050565b80158015620006bf5750620006bf8262000fcd60201b620015351760201c565b15620006e257604051635318beb960e01b81526000600482015260240162000315565b6000620006fa8362000fd160201b620015391760201c565b60ff169050600e8111156200072657604051635318beb960e01b81526004810182905260240162000315565b60006200073e8462000ff460201b6200154a1760201c565b60ff169050601c620007518383620022df565b11156200078157620007648282620022df565b604051635318beb960e01b81526004016200031591815260200190565b60008060005b620007938585620022df565b81101562000847576000620007cf620007bb838a6200100e60201b620015561790919060201c565b60c5811115620005335762000533620021f0565b11156200080c57838110620007f757604051633c795af960e21b815260040160405180910390fd5b82620008038162002320565b9350506200083e565b838110156200082e57604051633c795af960e21b815260040160405180910390fd5b816200083a8162002320565b9250505b60010162000787565b508282146200086d57604051635318beb960e01b81526004810183905260240162000315565b8381146200089257604051635318beb960e01b81526004810182905260240162000315565b505050505050565b6000620008c7620008b6836200104a60201b620015821760201c565b62000fcd60201b620015351760201c565b1592915050565b606081604051602001620008e491815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b81600081518110620009365762000936620021da565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b60308201528151808203909301835281019052600090620009909062000989906200219c565b8362001109565b9050620009be81620009ad866200115060201b6200160a1760201c565b6200115360201b6200126f1760201c565b620009e5620009cf826020620022df565b620009ad856200115060201b6200160a1760201c565b60408051676d756473746f726560c01b602082015265736368656d6160d01b603082015260008051602062006a07833981519152910160405160208183030381529060405262000a35906200219c565b60001c8362000a4f876200115060201b6200160a1760201c565b62000a65876200115060201b6200160a1760201c565b60408051602081019390935282015260600160408051601f198184030181529082905262000a9593929162002379565b60405180910390a15050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060c38160008151811062000ae15762000ae1620021da565b602002602001019060c581111562000afd5762000afd620021f0565b908160c581111562000b135762000b13620021f0565b8152505062000b2d81620004bd60201b6200160d1760201c565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050605f8160008151811062000ae15762000ae1620021da565b62000b7a62001157565b1562000b9857620003368383836200029a60201b620018621760201c565b6040516312e6f41b60e21b81526004810184905260248101839052604481018290523390634b9bd06c906064015b600060405180830381600087803b15801562000be157600080fd5b505af115801562000bf6573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905060c58160008151811062000c3c5762000c3c620021da565b602002602001019060c581111562000c585762000c58620021f0565b908160c581111562000c6e5762000c6e620021f0565b8152505060c48160018151811062000ae15762000ae1620021da565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811062000ae15762000ae1620021da565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908162000ce35790505090506040518060400160405280600581526020016476616c756560d81b8152508160008151811062000d2f5762000d2f620021da565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b62000d6d62001157565b1562000d8b5762000336838383620011cc60201b620018cf1760201c565b604051630ba711df60e11b8152339063174e23be9062000bc6908690869086906004016200240b565b60408051600280825260608281019093528291600091816020015b606081526020019060019003908162000dcf579050509050604051806040016040528060098152602001687461626c654e616d6560b81b8152508160008151811062000e1f5762000e1f620021da565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d65730000000000000000000000008152508160018151811062000e765762000e76620021da565b6020026020010181905250806040518060400160405280600d81526020016c53746f72654d6574616461746160981b8152509092509250509091565b6000808260c581111562000eca5762000eca620021f0565b60ff169050602081101562000ee65762000293816001620022df565b604081101562000f0b57602062000eff826001620022df565b6200029391906200243a565b606081101562000f2457604062000eff826001620022df565b60608360c581111562000f3b5762000f3b620021f0565b0362000f4a5750600192915050565b60618360c581111562000f615762000f61620021f0565b0362000f705750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c6001600160f01b031990911c198416179392505050565b1590565b600062000feb8260036200128560201b620015671760201c565b60f81c92915050565b600062000feb8260026200128560201b620015671760201c565b6000620010338362001022846004620022df565b6200128560201b620015671760201c565b60f81c60c5811115620002935762000293620021f0565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110620010895762001089620021da565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b60308201528151808203909301835281019052600090620010f190620010dc906200219c565b60001c836200110960201b620019731760201c565b90506200020f816200128c60201b620019c91760201c565b6000600080516020620069e78339815191528383604051602001620011319392919062002454565b60408051601f1981840301815291905280516020909101209392505050565b90565b9055565b6000303b8082036200116b57600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015620011a557600080fd5b505afa925050508015620011b7575060015b620011c457600091505090565b600191505090565b6000620011d98462001290565b9050815160001480620012045750620011fd81620012ff60201b620019cd1760201c565b60ff168251145b62001246576200121f81620012ff60201b620019cd1760201c565b825160405163f2b2755960e01b815260ff9092166004830152602482015260440162000315565b6200127f8484846040516020016200125f919062002475565b6040516020818303038152906040526200132960201b620019eb1760201c565b50505050565b6008021b90565b5490565b6000620012a8826200104a60201b620015821760201c565b9050620012c08162000fcd60201b620015351760201c565b15620012fa5781620012dd83620008ce60201b620011a51760201c565b6040516304cb85c760e21b81526004016200031592919062002263565b919050565b60006200130c8262000fd1565b620013178362000ff4565b6200132391906200248a565b92915050565b6000620013378383620013eb565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b81600081518110620013775762001377620021da565b60209081029190910181019190915260408051676d756473746f726560c01b818401526c53746f72654d6574616461746160981b60308201528151808203909301835281019052620013e490620013ce906200219c565b60001c8284620014cb60201b62001aa61760201c565b5050505050565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110620014285762001428620021da565b602002602001019061ffff16908161ffff1681525050825181600181518110620014565762001456620021da565b602002602001019061ffff16908161ffff1681525050600062001484826200151c60201b62001afe1760201c565b90506200149c816200115060201b6200160a1760201c565b8585604051602001620014b293929190620024b2565b6040516020818303038152906040529250505092915050565b620014d562001157565b15620014f35762000336838383620015d560201b62001bdb1760201c565b60405163328d068d60e11b8152339063651a0d1a9062000bc69086908690869060040162002379565b6000806000805b8451811015620015b8576200157d836200153f836002620024f3565b6200154c906004620022df565b878481518110620015615762001561620021da565b602002602001015160f01b62000faf60201b620014ff1760201c565b9250848181518110620015945762001594620021da565b602002602001015161ffff1682620015ad919062002515565b915060010162001523565b506200020f8260008360e01b6200190760201b62001e301760201c565b6000620015e28462001290565b90506000620015fc826200192560201b62001e661760201c565b905060008190506000806200161c8562000fd160201b620015391760201c565b60ff16111562001671576200163d85846200192b60201b62001e6c1760201c565b905062001655816200193360201b62001e741760201c565b62001662906020620022df565b6200166e9083620022df565b91505b84518214620016a157845160405163521b3d3360e01b815262000315918491600401918252602082015260400190565b60008051602062006a07833981519152878787604051620016c59392919062002379565b60405180910390a16000620016e88860001b6200193960201b62001e7a1760201c565b905060005b8151811015620017955760008282815181106200170e576200170e620021da565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b81526004016200174a9392919062002379565b600060405180830381600087803b1580156200176557600080fd5b505af11580156200177a573d6000803e3d6000fd5b505050505080806200178c9062002320565b915050620016ed565b506000620017af89896200110960201b620019731760201c565b90506000620017c98862001a1060201b62001f281760201c565b9050620017e5826000838962001a1660201b62001f2e1760201c565b620017f2866020620022df565b620017fe9082620022df565b9050620018168762000fd160201b620015391760201c565b60ff166000036200182d5750505050505050505050565b6000620018468b8b62001afe60201b62001fec1760201c565b90506200186381620009ad876200115060201b6200160a1760201c565b60008060005b6200187f8b62000fd160201b620015391760201c565b60ff168160ff161015620018f757620018a58e8e8362001b2660201b620020231760201c565b9250620018c48160ff168962001b7060201b6200207c1790919060201c565b9150620018e0836000878562001a1660201b62001f2e1760201c565b620018ec8286620022df565b945060010162001869565b5050505050505050505050505050565b6008820281811c6001600160e01b031990911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620019765762001976620021da565b60209081029190910181019190915260408051676d756473746f726560c01b8184015264486f6f6b7360d81b60308201528151808203909301835281019052600090620019df90620019c8906200219c565b60001c83600062001bb160201b620020ae1760201c565b90506200020f620019ff826000845162001c5460201b620021541760201c565b62001cca60201b620021e41760201c565b60200190565b60208304840193506020838162001a315762001a3162002537565b069250821562001a9f576000836020039050600062001a5b8362001ce860201b620021f51760201c565b90506008850281811c91508451811c905081198754168282161787555081831162001a885750506200127f565b62001a95600187620022df565b9550509182019190035b6020811062001acc578151845562001ab9600185620022df565b935060209190910190601f190162001a9f565b80156200127f57600062001aeb8262001ce860201b620021f51760201c565b8554845182169119161785555050505050565b6000600080516020620069e7833981519152838360405160200162001131939291906200254d565b6000600080516020620069e783398151915284848460405160200162001b50949392919062002598565b60408051601f198184030181529190528051602090910120949350505050565b60008062001b80836002620024f3565b62001b8d906004620022df565b905062001ba684826200128560201b620015671760201c565b60f01c949350505050565b606062001bbd62001157565b1562001be35762001bdb84848462001cf560201b620022021760201c565b905062000293565b604051636a50093760e11b8152339063d4a0126e9062001c0c90879087908790600401620025cd565b600060405180830381865afa15801562001c2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001bdb9190810190620025fb565b600081831115801562001c68575083518211155b62001c8e578383836040516323230fa360e01b81526004016200031593929190620026a8565b6020840162001c9e8482620022df565b9050600062001cae85856200243a565b6001600160801b031660809290921b9190911795945050505050565b6060600062000293836014600062001d1d60201b6200221d1760201c565b60001960089091021c1990565b6060600062001d048562001290565b905062001d148585858462001e68565b95945050505050565b6060600062001d378562001ec860201b620023601760201c565b9050600062001d518662001ece60201b620023661760201c565b905060008462001d7c5762001d68866008620024f3565b62001d76906101006200243a565b62001d7f565b60005b9050600086838162001d955762001d9562002537565b04905062001da48784620026cf565b1562001e195760405162461bcd60e51b815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a65000000606482015260840162000315565b602080820201604051955080860160405250808552600060208601855b8383101562001e5a578051851c825260019290920191602090910190890162001e36565b505050505050509392505050565b606062001e808262000ff460201b6200154a1760201c565b60ff168360ff16101562001eaf5762001ea78585858562001eda60201b6200237b1760201c565b90506200020f565b62001ea78585858562001f5f60201b620023db1760201c565b60801c90565b6001600160801b031690565b6060600062001efb8460ff16846200100e60201b620015561790919060201c565b9050600062001f188260c5811115620005335762000533620021f0565b9050600062001f28888862001109565b9050600062001f38868862001fe7565b905062001f528284836200204160201b620024341760201c565b9998505050505050505050565b6060600062001f798362000ff460201b6200154a1760201c565b62001f859085620022fa565b9050600062001f9687878462001b26565b9050600062001fc260ff841662001fae8a8a6200209e565b62001b7060201b6200207c1790919060201c565b905062001fdb8282620020ad60201b620024941760201c565b98975050505050505050565b600080805b8360ff16811015620020395762002016620007bb82876200100e60201b620015561790919060201c565b620020229083620022df565b915080620020308162002320565b91505062001fec565b509392505050565b6060826001600160401b038111156200205e576200205e620021c4565b6040519080825280601f01601f19166020018201604052801562002089576020820181803683370190505b509050602081016200203985858584620020bd565b600080620010f1848462001afe565b6060620002938383600062002041565b602082048401935060208281620020d857620020d862002537565b06915081156200213e5760008260200390506000620021028262001ce860201b620021f51760201c565b90508554600885021b811984511682821617845250818511620021275750506200127f565b62002134600187620022df565b9550509283900392015b602083106200216a578354815262002158600185620022df565b9350601f19909201916020016200213e565b82156200127f576000620021898462001ce860201b620021f51760201c565b8251865482169119161782525050505050565b80516020808301519190811015620021be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b838110156200222357818101518382015260200162002209565b838111156200127f5750506000910152565b600081518084526200224f81602086016020860162002206565b601f01601f19169290920160200192915050565b8281526040602082015260006200020f604083018462002235565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103620022ad57620022ad6200227e565b60010192915050565b600061ffff808316818516808303821115620022d657620022d66200227e565b01949350505050565b60008219821115620022f557620022f56200227e565b500190565b600060ff821660ff8416808210156200231757620023176200227e565b90039392505050565b6000600182016200233557620023356200227e565b5060010190565b600081518084526020808501945080840160005b838110156200236e5781518752958201959082019060010162002350565b509495945050505050565b8381526060602082015260006200239460608301856200233c565b8281036040840152620023a8818562002235565b9695505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015620023fe578284038952620023eb84835162002235565b98850198935090840190600101620023d0565b5091979650505050505050565b83815260606020820152600062002426606083018562002235565b8281036040840152620023a88185620023b2565b6000828210156200244f576200244f6200227e565b500390565b83815282602082015260606040820152600062001d1460608301846200233c565b602081526000620002936020830184620023b2565b600060ff821660ff84168060ff03821115620024aa57620024aa6200227e565b019392505050565b83815260008351620024cc81602085016020880162002206565b80830190508351620024e681602084016020880162002206565b0160200195945050505050565b60008160001904831182151516156200251057620025106200227e565b500290565b600063ffffffff808316818516808303821115620022d657620022d66200227e565b634e487b7160e01b600052601260045260246000fd5b8381528260208201526080604082015260006200256e60808301846200233c565b828103606084015260068152650d8cadccee8d60d31b602082015260408101915050949350505050565b848152836020820152608060408201526000620025b960808301856200233c565b905060ff8316606083015295945050505050565b838152606060208201526000620025e860608301856200233c565b905060ff83166040830152949350505050565b6000602082840312156200260e57600080fd5b81516001600160401b03808211156200262657600080fd5b818401915084601f8301126200263b57600080fd5b815181811115620026505762002650620021c4565b604051601f8201601f19908116603f011681019083821181831017156200267b576200267b620021c4565b816040528281528760208487010111156200269557600080fd5b6200069483602083016020880162002206565b606081526000620026bd606083018662002235565b60208301949094525060400152919050565b600082620026ed57634e487b7160e01b600052601260045260246000fd5b500690565b6142e580620027026000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c8063916a17c6116100ee578063ba414fa611610097578063d99ddc0711610071578063d99ddc07146102e7578063e20c9f71146102fa578063e426a06214610302578063fa7626d41461031557600080fd5b8063ba414fa6146102b4578063cd9847bc146102cc578063d4a0126e146102d457600080fd5b8063a2d3d4fb116100c8578063a2d3d4fb1461028c578063a5c2f007146101bb578063b5508aa9146102ac57600080fd5b8063916a17c61461027657806391c45d2214610230578063971eb6cb1461027e57600080fd5b80633f7286f411610150578063651a0d1a1161012a578063651a0d1a1461023e57806366d9a9a01461024c57806385226c811461026157600080fd5b80633f7286f41461021a5780634b9bd06c1461022257806351ea4f1b1461023057600080fd5b80631ed7831c116101815780631ed7831c146101d35780632b26fb29146101f15780633e5e3c231461021257600080fd5b806307ff106e146101a85780630a9254e4146101bd578063174e23be146101c5575b600080fd5b6101bb6101b63660046137c7565b610322565b005b6101bb610354565b6101bb6101b6366004613891565b6101db61039b565b6040516101e8919061390b565b60405180910390f35b6102046101ff366004613958565b6103fd565b6040519081526020016101e8565b6101db61040e565b6101db61046e565b6101bb6101b6366004613971565b6101bb6101b63660046139ae565b6101bb6101b6366004613a3b565b6102546104ce565b6040516101e89190613aa4565b6102696105d2565b6040516101e89190613c3a565b6102546106a2565b6101bb6101b6366004613c4d565b61029f61029a366004613c99565b61079d565b6040516101e89190613cec565b6102696107e7565b6102bc6108b7565b60405190151581526020016101e8565b6101bb6109f9565b61029f6102e2366004613cff565b610bbf565b61029f6102f5366004613c4d565b610c00565b6101db610c47565b610204610310366004613958565b610ca7565b6000546102bc9060ff1681565b6040517fbf834eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61035c6124a2565b610364612500565b601b546103749060801b3061255e565b601b546103999060801b6fffffffffffffffffffffffffffffffff191630600161264d565b565b6060600d8054806020026020016040519081016040528092919081815260200182805480156103f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103d5575b5050505050905090565b600061040882612729565b92915050565b6060600f8054806020026020016040519081016040528092919081815260200182805480156103f3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103d5575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156103f3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103d5575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156105c95760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156105b157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161055e5790505b505050505081525050815260200190600101906104f2565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156105c957838290600052602060002001805461061590613d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461064190613d5d565b801561068e5780601f106106635761010080835404028352916020019161068e565b820191906000526020600020905b81548152906001019060200180831161067157829003601f168201915b5050505050815260200190600101906105f6565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156105c95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561078557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107325790505b505050505081525050815260200190600101906106c6565b60606107de85858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612779915050565b95945050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156105c957838290600052602060002001805461082a90613d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461085690613d5d565b80156108a35780601f10610878576101008083540402835291602001916108a3565b820191906000526020600020905b81548152906001019060200180831161088657829003601f168201915b50505050508152602001906001019061080b565b60008054610100900460ff16156108d75750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156109f45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909161097c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613d97565b60408051601f198184030181529082905261099691613ddf565b6000604051808303816000865af19150503d80600081146109d3576040519150601f19603f3d011682016040523d82523d6000602084013e6109d8565b606091505b50915050808060200190518101906109f09190613dfb565b9150505b919050565b601b54601c54610a2a91610a2591608082811b92600160801b9004901b906001600160a01b03166128de565b612926565b601b54610a5b9060801b6fffffffffffffffffffffffffffffffff19165b601c546001600160a01b0316600161264d565b601b54601c54610a8c91610a8791608082811b92600160801b9004901b906001600160a01b03166128de565b612933565b601b54610abd9060801b6fffffffffffffffffffffffffffffffff19165b601c546001600160a01b0316600061264d565b601b54601c54610ae991610a2591608082811b92600160801b9004901b906001600160a01b03166128de565b601b54610b2890600160801b81046fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff191617610a48565b601b54601c54610b5491610a8791608082811b92600160801b9004901b906001600160a01b03166128de565b601b54610b9390600160801b81046fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff191617610aaa565b601b54601c5461039991610a2591608082811b92600160801b9004901b906001600160a01b03166128de565b60606107de85858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612202915050565b6060610c3f848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506129a792505050565b949350505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156103f3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103d5575050505050905090565b6000610408826129c1565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152610d0d9101604051602081830303815290604052610cf390613e1d565b610cfe605f80610d2d565b610d08601f610de2565b611862565b610d15610e5a565b610d1d610eaf565b610d25610f17565b610399610f74565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610d6657610d66613e57565b602002602001019060c5811115610d7f57610d7f613e6d565b908160c5811115610d9257610d92613e6d565b815250508281600181518110610daa57610daa613e57565b602002602001019060c5811115610dc357610dc3613e6d565b908160c5811115610dd657610dd6613e6d565b905250610c3f8161160d565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610e1b57610e1b613e57565b602002602001019060c5811115610e3457610e34613e6d565b908160c5811115610e4757610e47613e6d565b905250610e538161160d565b9392505050565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201526103999101604051602081830303815290604052610e9a90613e1d565b610ea26129cc565b610eaa612a44565b611325565b60408051676d756473746f726560c01b60208201527f53746f72654d657461646174610000000000000000000000000000000000000060308201526103999101604051602081830303815290604052610f0790613e1d565b610f0f612a7e565b610eaa612afd565b600080610f22612b37565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152929450909250610f7091015b604051602081830303815290604052610f6990613e1d565b83836113c0565b5050565b600080610f7f612be7565b60408051676d756473746f726560c01b60208201527f53746f72654d65746164617461000000000000000000000000000000000000006030820152929450909250610f709101610f51565b80158015610fd6575081155b15610ffc57604051635318beb960e01b8152600060048201526024015b60405180910390fd5b600061100783611539565b60ff169050600e81111561103157604051635318beb960e01b815260048101829052602401610ff3565b600061103c8461154a565b60ff169050601c61104d8383613e99565b11156110795761105d8282613e99565b604051635318beb960e01b8152600401610ff391815260200190565b60008060005b6110898585613e99565b8110156111565760006110b561109f8984611556565b60c58111156110b0576110b0613e6d565b611418565b1115611106578381106110f4576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826110fe81613eb1565b93505061114e565b83811015611140576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161114a81613eb1565b9250505b60010161107f565b5082821461117a57604051635318beb960e01b815260048101839052602401610ff3565b83811461119d57604051635318beb960e01b815260048101829052602401610ff3565b505050505050565b6060816040516020016111ba91815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b8160008151811061120957611209613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b603083015260009161126591015b60405160208183030381529060405261125f90613e1d565b83611973565b8481559050611273565b9055565b611286611281826020613e99565b849055565b60408051676d756473746f726560c01b602082015265736368656d6160d01b60308201527f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f91016040516020818303038152906040526112e590613e1d565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611316939291613f06565b60405180910390a15050505050565b61132d612d02565b156113425761133d838383611862565b505050565b6040517f4b9bd06c0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290523390634b9bd06c906064015b600060405180830381600087803b1580156113a357600080fd5b505af11580156113b7573d6000803e3d6000fd5b50505050505050565b6113c8612d02565b156113d85761133d8383836118cf565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be9061138990869086908690600401613f3b565b6000808260c581111561142d5761142d613e6d565b60ff169050602081101561144657610e53816001613e99565b604081101561146657602061145c826001613e99565b610e539190613f66565b606081101561147c57604061145c826001613e99565b60608360c581111561149057611490613e6d565b0361149e5750600192915050565b60618360c58111156114b2576114b2613e6d565b036114c05750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b1590565b6000601882901b5b60f81c92915050565b6000601082901b611541565b600061156e83611567846004613e99565b6008021b90565b60f81c60c5811115610e5357610e53613e6d565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b816000815181106115be576115be613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b60308301526000916116009101611247565b9050610c3f815490565b90565b6000601c82511115611637578151604051635318beb960e01b8152600401610ff391815260200190565b60008060008060005b865181101561175e57600061167988838151811061166057611660613e57565b602002602001015160c58111156110b0576110b0613e6d565b905061ffff8116156116cf5782156116bd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836116c781613f7d565b9450506116d4565b600192505b6116de8186613f9c565b9450611753866116ef846004613e99565b8a858151811061170157611701613e57565b602002602001015160c581111561171a5761171a613e6d565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101611640565b50600082875161176e9190613fc2565b9050600e8160ff16111561179a57604051635318beb960e01b815260ff82166004820152602401610ff3565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b61186d826000610fca565b611878816001610fca565b61188183612d73565b156118c45782611890846111a5565b6040517fda76cc74000000000000000000000000000000000000000000000000000000008152600401610ff3929190613fe5565b61133d8383836111d0565b60006118da84612729565b90508151600014806118f757506118f0816119cd565b60ff168251145b61194357611904816119cd565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff90921660048301526024820152604401610ff3565b61196d8484846040516020016119599190613c3a565b6040516020818303038152906040526119eb565b50505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016119aa93929190613ffe565b60408051601f1981840301815291905280516020909101209392505050565b5490565b60006119d882611539565b6119e18361154a565b610408919061401d565b60006119f78383612d88565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b81600081518110611a3457611a34613e57565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d657461646174610000000000000000000000000000000000000060308201528151808203909301835281019052611a9f90611a9890613e1d565b8284611aa6565b5050505050565b611aae612d02565b15611abe5761133d838383611bdb565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a9061138990869086908690600401613f06565b6000806000805b8451811015611bb057611b7b83611b1d836002614042565b611b28906004613e99565b878481518110611b3a57611b3a613e57565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110611b8f57611b8f613e57565b602002602001015161ffff1682611ba69190614061565b9150600101611b05565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17610c3f565b6000611be684612729565b90506000611bf48260f01c90565b905080600080611c0385611539565b60ff161115611c3157506020848301015160e081901c611c24906020613e99565b611c2e9083613e99565b91505b84518214611c785784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610ff3918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f878787604051611cab93929190613f06565b60405180910390a16000611cbe88611e7a565b905060005b8151811015611d60576000828281518110611ce057611ce0613e57565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b8152600401611d1a93929190613f06565b600060405180830381600087803b158015611d3457600080fd5b505af1158015611d48573d6000803e3d6000fd5b50505050508080611d5890613eb1565b915050611cc3565b506000611d6d8989611973565b905060208701611d808260008389611f2e565b611d8b866020613e99565b611d959082613e99565b9050611da087611539565b60ff16600003611db65750505050505050505050565b6000611dc28b8b611fec565b858155905060008060005b611dd68b611539565b60ff168160ff161015611e2057611dee8e8e83612023565b9250611dfd8860ff831661207c565b9150611e0c8360008785611f2e565b611e168286613e99565b9450600101611dcd565b5050505050505050505050505050565b6008820281811c7fffffffff0000000000000000000000000000000000000000000000000000000090911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611eb457611eb4613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925264486f6f6b7360d81b6030830152600091611f1191015b604051602081830303815290604052611f0990613e1d565b8360006120ae565b9050610c3f611f238260008451612154565b6121e4565b60200190565b602083048401935060208381611f4657611f46614080565b0692508215611f9f5760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611f8a57505061196d565b611f95600187613e99565b9550509182019190035b60208110611fc85781518455611fb6600185613e99565b935060209190910190601f1901611f9f565b801561196d576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016119aa93929190614096565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d984848460405160200161205c94939291906140f6565b60408051601f198184030181529190528051602090910120949350505050565b60008061208a836002614042565b612095906004613e99565b90506120a384826008021b90565b60f01c949350505050565b60606120b8612d02565b156120cf576120c8848484612202565b9050610e53565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e9061210f90879087908790600401614129565b600060405180830381865afa15801561212c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120c89190810190614155565b6000818311158015612167575083518211155b6121a3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610ff3939291906141f7565b602084016121b18482613e99565b905060006121bf8585613f66565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610e53836014600061221d565b60001960089091021c1990565b6060600061220f85612729565b90506107de85858584612e3e565b6060600061222b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008461226357612252866008614042565b61225e90610100613f66565b612266565b60005b9050600086838161227957612279614080565b049050612286878461421c565b15612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610ff3565b602080820201604051955080860160405250808552600060208601855b83831015612352578051851c8252600192909201916020909101908901612330565b505050505050509392505050565b60801c90565b6fffffffffffffffffffffffffffffffff1690565b6060600061238c8360ff8616611556565b905060006123a58260c58111156110b0576110b0613e6d565b905060006123b38888611973565b905060006123c18688612e75565b90506123ce828483612434565b9998505050505050505050565b606060006123e88361154a565b6123f29085613fc2565b90506000612401878784612023565b9050600061241c8360ff166124168a8a612eb0565b9061207c565b90506124288282612494565b98975050505050505050565b60608267ffffffffffffffff81111561244f5761244f613e41565b6040519080825280601f01601f191660200182016040528015612479576020820181803683370190505b5090506020810161248c85858584612ebd565b509392505050565b6060610e5383836000612434565b60408051600060208201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261039991016040516020818303038152906040526124f090613e1d565b6124f8612f72565b610eaa612fac565b60408051600060208201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152610399910160405160208183030381529060405261254e90613e1d565b61255661302b565b610eaa613065565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff1916816000815181106125a7576125a7613e57565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905261133d9061260190613e1d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015283906000906034015b60405160208183030381529060405261309f565b604080516002808252606082018352600092602083019080368337019050509050838160008151811061268257612682613e57565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106126b4576126b4613e57565b602090810291909101810191909152604080516000818401527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261196d9061270e90613e1d565b60405184151560f81b60208201528390600090602101612639565b600061273482611582565b9050806109f45781612745836111a5565b6040517f132e171c000000000000000000000000000000000000000000000000000000008152600401610ff3929190613fe5565b606060006127878360f01c90565b90508060008061279686611539565b60ff16905080156127e1576127ab8888612eb0565b915060006127b98360e01c90565b11156127e1576127c98260e01c90565b6127d4906020613e99565b6127de9084613e99565b92505b60008367ffffffffffffffff8111156127fc576127fc613e41565b6040519080825280601f01601f191660200182016040528015612826576020820181803683370190505b509050602081016128398a8a8884613137565b6128438460e01c90565b60000361285757509450610e539350505050565b6128618682613e99565b8481529050612871602082613e99565b905060005b838160ff1610156128cf57600061288e8c8c84612023565b9050600061289f8760ff851661207c565b90506128ae8282600087612ebd565b6128b88185613e99565b9350505080806128c790613f7d565b915050612876565b50909998505050505050505050565b60006128fe6fffffffffffffffffffffffffffffffff1985165b83613158565b80610c3f5750610c3f6fffffffffffffffffffffffffffffffff198516608085901c176128f8565b6129308115612933565b50565b80612930577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516129979060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161293061321e565b606060006129b484612729565b9050610c3f848483612779565b60006127348261335e565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110612a0657612a06613e57565b602002602001019060c5811115612a1f57612a1f613e6d565b908160c5811115612a3257612a32613e6d565b905250612a3e8161160d565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110612a0657612a06613e57565b6040805160028082526060820183526000928392919060208301908036833701905050905060c581600081518110612ab857612ab8613e57565b602002602001019060c5811115612ad157612ad1613e6d565b908160c5811115612ae457612ae4613e6d565b8152505060c481600181518110612a0657612a06613e57565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110612a0657612a06613e57565b6040805160018082528183019092526060918291600091816020015b6060815260200190600190039081612b535790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110612bb357612bb3613e57565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081612c025790505090506040518060400160405280600981526020017f7461626c654e616d65000000000000000000000000000000000000000000000081525081600081518110612c6257612c62613e57565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600181518110612cb657612cb6613e57565b6020026020010181905250806040518060400160405280600d81526020017f53746f72654d65746164617461000000000000000000000000000000000000008152509092509250509091565b6000303b808203612d1557600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015612d4e57600080fd5b505afa925050508015612d5f575060015b612d6b57600091505090565b600191505090565b6000612d8161153583611582565b1592915050565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110612dc257612dc2613e57565b602002602001019061ffff16908161ffff1681525050825181600181518110612ded57612ded613e57565b602002602001019061ffff16908161ffff16815250506000612e0e82611afe565b9050808585604051602001612e259392919061423e565b6040516020818303038152906040529250505092915050565b6060612e498261154a565b60ff168360ff161015612e6957612e628585858561237b565b9050610c3f565b612e62858585856123db565b600080805b8360ff1681101561248c57612e9261109f8683611556565b612e9c9083613e99565b915080612ea881613eb1565b915050612e7a565b6000806116008484611fec565b602082048401935060208281612ed557612ed5614080565b0691508115612f265760208290036000600019600883021c1990508554600885021b811984511682821617845250818511612f1157505061196d565b612f1c600187613e99565b9550509283900392015b60208310612f4e5783548152612f3d600185613e99565b9350601f1990920191602001612f26565b821561196d576000600019600885021c198251865482169119161782525050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110612a0657612a06613e57565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110612fe657612fe6613e57565b602002602001019060c5811115612fff57612fff613e6d565b908160c581111561301257613012613e6d565b81525050606181600181518110612a0657612a06613e57565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110612a0657612a06613e57565b60408051600180825281830190925260009182919060208083019080368337019050509050604f81600081518110612a0657612a06613e57565b6130a7612d02565b156130bd576130b8848484846133ec565b61196d565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d22906130ff90879087908790879060040161427b565b600060405180830381600087803b15801561311957600080fd5b505af115801561312d573d6000803e3d6000fd5b5050505050505050565b811561196d5760006131498585611973565b9050611a9f8184600085612ebd565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061319157613191613e57565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106131c3576131c3613e57565b6020908102919091018101919091526040805160009281018390527f5265736f75726365416363657373000000000000000000000000000000000000603082015261320e9101611ef1565b602081015190915060f81c6107de565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156133305760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526132cf9291602001613d97565b60408051601f19818403018152908290526132e991613ddf565b6000604051808303816000865af19150503d8060008114613326576040519150601f19603f3d011682016040523d82523d6000602084013e61332b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b8160008151811061339a5761339a613e57565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b60308301526000916133dc9101611247565b9050610c3f6119c9826020613e99565b60006133f785612729565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce8585858560405161342e949392919061427b565b60405180910390a1600061344186611e7a565b905060005b81518110156134e557600082828151811061346357613463613e57565b60200260200101519050806001600160a01b031663f58a28f7898989896040518563ffffffff1660e01b815260040161349f949392919061427b565b600060405180830381600087803b1580156134b957600080fd5b505af11580156134cd573d6000803e3d6000fd5b505050505080806134dd90613eb1565b915050613446565b506134ef8261154a565b60ff168460ff16101561350e5761350986868487876135bd565b61351b565b61351b8686848787613663565b60005b81518110156113b757600082828151811061353b5761353b613e57565b60200260200101519050806001600160a01b0316631cd68a1a898989896040518563ffffffff1660e01b8152600401613577949392919061427b565b600060405180830381600087803b15801561359157600080fd5b505af11580156135a5573d6000803e3d6000fd5b505050505080806135b590613eb1565b91505061351e565b60006135cc8460ff8516611556565b905081516135e58260c58111156110b0576110b0613e6d565b1461363c576135ff8160c58111156110b0576110b0613e6d565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610ff3565b60006136488787611973565b905060006136568686612e75565b905061312d8282866136a0565b600061366e8461154a565b6136789084613fc2565b905061368786868385516136b5565b6000613694878784612023565b90506113b781846136e7565b600060208201905061196d8484838551611f2e565b60006136c18585611fec565b905060006136cd825490565b90506136dd8160ff8616856136f3565b808355905061119d565b610f70826000836136a0565b600083816137018260e01c90565b90506000613712878760ff1661207c565b9050808510613736576137258186613f66565b61372f9083613e99565b915061374d565b6137408582613f66565b61374a9083613f66565b91505b600061375a876002614042565b613765906004613e99565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c17612428565b600080604083850312156137da57600080fd5b8235915060208301356001600160a01b03811681146137f857600080fd5b809150509250929050565b60008083601f84011261381557600080fd5b50813567ffffffffffffffff81111561382d57600080fd5b60208301915083602082850101111561384557600080fd5b9250929050565b60008083601f84011261385e57600080fd5b50813567ffffffffffffffff81111561387657600080fd5b6020830191508360208260051b850101111561384557600080fd5b6000806000806000606086880312156138a957600080fd5b85359450602086013567ffffffffffffffff808211156138c857600080fd5b6138d489838a01613803565b909650945060408801359150808211156138ed57600080fd5b506138fa8882890161384c565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561394c5783516001600160a01b031683529284019291840191600101613927565b50909695505050505050565b60006020828403121561396a57600080fd5b5035919050565b60008060006060848603121561398657600080fd5b505081359360208301359350604090920135919050565b803560ff811681146109f457600080fd5b600080600080600080608087890312156139c757600080fd5b86359550602087013567ffffffffffffffff808211156139e657600080fd5b6139f28a838b0161384c565b9097509550859150613a0660408a0161399d565b94506060890135915080821115613a1c57600080fd5b50613a2989828a01613803565b979a9699509497509295939492505050565b600080600080600060608688031215613a5357600080fd5b85359450602086013567ffffffffffffffff80821115613a7257600080fd5b613a7e89838a0161384c565b90965094506040880135915080821115613a9757600080fd5b506138fa88828901613803565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015613b7e578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015613b695783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190613b27565b50978a01979550505091870191600101613acc565b50919998505050505050505050565b60005b83811015613ba8578181015183820152602001613b90565b8381111561196d5750506000910152565b60008151808452613bd1816020860160208601613b8d565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015613c2d578284038952613c1b848351613bb9565b98850198935090840190600101613c03565b5091979650505050505050565b602081526000610e536020830184613be5565b600080600060408486031215613c6257600080fd5b83359250602084013567ffffffffffffffff811115613c8057600080fd5b613c8c8682870161384c565b9497909650939450505050565b60008060008060608587031215613caf57600080fd5b84359350602085013567ffffffffffffffff811115613ccd57600080fd5b613cd98782880161384c565b9598909750949560400135949350505050565b602081526000610e536020830184613bb9565b60008060008060608587031215613d1557600080fd5b84359350602085013567ffffffffffffffff811115613d3357600080fd5b613d3f8782880161384c565b9094509250613d5290506040860161399d565b905092959194509250565b600181811c90821680613d7157607f821691505b602082108103613d9157634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251613dd1816004850160208701613b8d565b919091016004019392505050565b60008251613df1818460208701613b8d565b9190910192915050565b600060208284031215613e0d57600080fd5b81518015158114610e5357600080fd5b80516020808301519190811015613d915760001960209190910360031b1b16919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613eac57613eac613e83565b500190565b60006000198203613ec457613ec4613e83565b5060010190565b600081518084526020808501945080840160005b83811015613efb57815187529582019590820190600101613edf565b509495945050505050565b838152606060208201526000613f1f6060830185613ecb565b8281036040840152613f318185613bb9565b9695505050505050565b838152606060208201526000613f546060830185613bb9565b8281036040840152613f318185613be5565b600082821015613f7857613f78613e83565b500390565b600060ff821660ff8103613f9357613f93613e83565b60010192915050565b600061ffff808316818516808303821115613fb957613fb9613e83565b01949350505050565b600060ff821660ff841680821015613fdc57613fdc613e83565b90039392505050565b828152604060208201526000610c3f6040830184613bb9565b8381528260208201526060604082015260006107de6060830184613ecb565b600060ff821660ff84168060ff0382111561403a5761403a613e83565b019392505050565b600081600019048311821515161561405c5761405c613e83565b500290565b600063ffffffff808316818516808303821115613fb957613fb9613e83565b634e487b7160e01b600052601260045260246000fd5b8381528260208201526080604082015260006140b56080830184613ecb565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b8481528360208201526080604082015260006141156080830185613ecb565b905060ff8316606083015295945050505050565b8381526060602082015260006141426060830185613ecb565b905060ff83166040830152949350505050565b60006020828403121561416757600080fd5b815167ffffffffffffffff8082111561417f57600080fd5b818401915084601f83011261419357600080fd5b8151818111156141a5576141a5613e41565b604051601f8201601f19908116603f011681019083821181831017156141cd576141cd613e41565b816040528281528760208487010111156141e657600080fd5b611857836020830160208801613b8d565b60608152600061420a6060830186613bb9565b60208301949094525060400152919050565b60008261423957634e487b7160e01b600052601260045260246000fd5b500690565b83815260008351614256816020850160208801613b8d565b8083019050835161426e816020840160208801613b8d565b0160200195945050505050565b8481526080602082015260006142946080830186613ecb565b60ff8516604084015282810360608401526118578185613bb956fea2646970667358221220be5c9dcf53f62afc44e69738347d0f682644f97f5e5eb3a79bdd56ed5eaeeb0064736f6c634300080d003386425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d989c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f";
|
|
1017
1017
|
|
|
1018
1018
|
type AccessControlTestConstructorParams =
|
|
1019
1019
|
| [signer?: Signer]
|
|
@@ -147,7 +147,7 @@ const _abi = [
|
|
|
147
147
|
];
|
|
148
148
|
|
|
149
149
|
const _bytecode =
|
|
150
|
-
"0x608060405234801561001057600080fd5b50612f5d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313861fb51461003b57806317d7de7c14610050575b600080fd5b61004e610049366004612999565b610083565b005b604080517f636f72652e6d0000000000000000000000000000000000000000000000000000815290519081900360200190f35b61008b6100e2565b61009361014d565b61009b6101b2565b6100a36101fe565b6100ab61025c565b6100bf60006100b86102a8565b60016102da565b6100c76103cb565b6100cf610429565b6100d7610475565b6100df6104d3565b50565b6000806100ed61051f565b60408051600060208201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015292945090925061014991015b60405160208183030381529060405261014290612a19565b83836105e7565b5050565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201526101b0910160405160208183030381529060405261019b90612a19565b6101a361067b565b6101ab6106f3565b610772565b565b6000806101bd6107d5565b60408051600060208201527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030820152929450909250610149910161012a565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201526101b0910160405160208183030381529060405261024c90612a19565b61025461089d565b6101ab6108d7565b600080610267610956565b60408051600060208201527f5265736f757263654163636573730000000000000000000000000000000000006030820152929450909250610149910161012a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c806102d75750335b90565b604080516002808252606082018352600092602083019080368337019050509050838160008151811061030f5761030f612a40565b6020026020010181815250508260601b6bffffffffffffffffffffffff19168160018151811061034157610341612a40565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526103c59061039b90612a19565b60405184151560f81b60208201528390600090602101604051602081830303815290604052610a1e565b50505050565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201526101b0910160405160208183030381529060405261041990612a19565b610421610ab6565b6101ab610b35565b600080610434610b6f565b60408051600060208201527f53797374656d73000000000000000000000000000000000000000000000000006030820152929450909250610149910161012a565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526101b091016040516020818303038152906040526104c390612a19565b6104cb610c8a565b6101ab610d4f565b6000806104de610d89565b60408051600060208201527f66756e6353656c6563746f7273000000000000000000000000000000000000006030820152929450909250610149910161012a565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908161053b5790505090506040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508160008151811061059b5761059b612a40565b6020026020010181905250806040518060400160405280600e81526020017f4e616d6573706163654f776e65720000000000000000000000000000000000008152509092509250509091565b6105ef610efa565b15610604576105ff838383610f78565b505050565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be9061064490869086908690600401612b06565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b50505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106106b5576106b5612a40565b602002602001019060c58111156106ce576106ce612b3b565b908160c58111156106e1576106e1612b3b565b9052506106ed8161101b565b91505090565b60408051600280825260608201835260009283929190602083019080368337019050509050604f8160008151811061072d5761072d612a40565b602002602001019060c581111561074657610746612b3b565b908160c581111561075957610759612b3b565b81525050605f816001815181106106b5576106b5612a40565b61077a610efa565b1561078a576105ff838383611275565b6040517f4b9bd06c0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290523390634b9bd06c90606401610644565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816107f15790505090506040518060400160405280600d81526020017f6d6f64756c6541646472657373000000000000000000000000000000000000008152508160008151811061085157610851612a40565b6020026020010181905250806040518060400160405280601081526020017f496e7374616c6c65644d6f64756c6573000000000000000000000000000000008152509092509250509091565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106106b5576106b5612a40565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061091157610911612a40565b602002602001019060c581111561092a5761092a612b3b565b908160c581111561093d5761093d612b3b565b815250506061816001815181106106b5576106b5612a40565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816109725790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106109d2576109d2612a40565b6020026020010181905250806040518060400160405280600e81526020017f5265736f757263654163636573730000000000000000000000000000000000008152509092509250509091565b610a26610efa565b15610a3c57610a37848484846112e2565b6103c5565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d2290610a7e908790879087908790600401612b8c565b600060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b5050505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610af057610af0612a40565b602002602001019060c5811115610b0957610b09612b3b565b908160c5811115610b1c57610b1c612b3b565b815250506060816001815181106106b5576106b5612a40565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106106b5576106b5612a40565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081610b8a5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110610bea57610bea612a40565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110610c3e57610c3e612a40565b6020026020010181905250806040518060400160405280600781526020017f53797374656d73000000000000000000000000000000000000000000000000008152509092509250509091565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f81600081518110610cc557610cc5612a40565b602002602001019060c5811115610cde57610cde612b3b565b908160c5811115610cf157610cf1612b3b565b81525050604f81600181518110610d0a57610d0a612a40565b602002602001019060c5811115610d2357610d23612b3b565b908160c5811115610d3657610d36612b3b565b815250506043816002815181106106b5576106b5612a40565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106106b5576106b5612a40565b604080516003808252608082019092526060918291600091816020015b6060815260200190600190039081610da65790505090506040518060400160405280600981526020017f6e616d657370616365000000000000000000000000000000000000000000000081525081600081518110610e0657610e06612a40565b60200260200101819052506040518060400160405280600481526020017f66696c650000000000000000000000000000000000000000000000000000000081525081600181518110610e5a57610e5a612a40565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600281518110610eae57610eae612a40565b6020026020010181905250806040518060400160405280601181526020017f46756e6374696f6e53656c6563746f72730000000000000000000000000000008152509092509250509091565b6000303b808203610f0d57600191505090565b3073ffffffffffffffffffffffffffffffffffffffff1663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015610f5357600080fd5b505afa925050508015610f64575060015b610f7057600091505090565b600191505090565b6000610f83846114cd565b9050815160001480610fa05750610f9981611522565b60ff168251145b610ff157610fad81611522565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044015b60405180910390fd5b6103c58484846040516020016110079190612bc0565b604051602081830303815290604052611546565b6000601c82511115611045578151604051635318beb960e01b8152600401610fe891815260200190565b60008060008060005b865181101561117157600061108c88838151811061106e5761106e612a40565b602002602001015160c581111561108757611087612b3b565b611601565b905061ffff8116156110e25782156110d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836110da81612be9565b9450506110e7565b600192505b6110f18186612c08565b945061116686611102846004612c2e565b8a858151811061111457611114612a40565b602002602001015160c581111561112d5761112d612b3b565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b95505060010161104e565b5060008287516111819190612c46565b9050600e8160ff1611156111ad57604051635318beb960e01b815260ff82166004820152602401610fe8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b6112808260006116b9565b61128b8160016116b9565b6112948361188a565b156112d757826112a3846118a3565b6040517fda76cc74000000000000000000000000000000000000000000000000000000008152600401610fe8929190612c69565b6105ff8383836118ce565b60006112ed856114cd565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce858585856040516113249493929190612b8c565b60405180910390a1600061133786611a48565b905060005b81518110156113e857600082828151811061135957611359612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663f58a28f7898989896040518563ffffffff1660e01b81526004016113a29493929190612b8c565b600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b505050505080806113e090612c82565b91505061133c565b506113f282611b10565b60ff168460ff1610156114115761140c8686848787611b21565b61141e565b61141e8686848787611bc7565b60005b815181101561067257600082828151811061143e5761143e612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16631cd68a1a898989896040518563ffffffff1660e01b81526004016114879493929190612b8c565b600060405180830381600087803b1580156114a157600080fd5b505af11580156114b5573d6000803e3d6000fd5b505050505080806114c590612c82565b915050611421565b60006114d882611c04565b90508061151d57816114e9836118a3565b6040517f132e171c000000000000000000000000000000000000000000000000000000008152600401610fe8929190612c69565b919050565b600061152d82611ca3565b61153683611b10565b6115409190612c9c565b92915050565b60006115528383611caf565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b8160008151811061158f5761158f612a40565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d6574616461746100000000000000000000000000000000000000603082015281518082039093018352810190526115fa906115f390612a19565b8284611d65565b5050505050565b6000808260c581111561161657611616612b3b565b60ff16905060208110156116365761162f816001612c2e565b9392505050565b604081101561165657602061164c826001612c2e565b61162f9190612cc1565b606081101561166c57604061164c826001612c2e565b60608360c581111561168057611680612b3b565b0361168e5750600192915050565b60618360c58111156116a2576116a2612b3b565b036116b05750601492915050565b50600092915050565b801580156116c5575081155b156116e657604051635318beb960e01b815260006004820152602401610fe8565b60006116f183611ca3565b60ff169050600e81111561171b57604051635318beb960e01b815260048101829052602401610fe8565b600061172684611b10565b60ff169050601c6117378383612c2e565b1115611763576117478282612c2e565b604051635318beb960e01b8152600401610fe891815260200190565b60008060005b6117738585612c2e565b81101561183b57600061179a6117898984611dbd565b60c581111561108757611087612b3b565b11156117eb578381106117d9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826117e381612c82565b935050611833565b83811015611825576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161182f81612c82565b9250505b600101611769565b5082821461185f57604051635318beb960e01b815260048101839052602401610fe8565b83811461188257604051635318beb960e01b815260048101829052602401610fe8565b505050505050565b600061189c61189883611c04565b1590565b1592915050565b6060816040516020016118b891815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b8160008151811061190757611907612a40565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161197a91015b60405160208183030381529060405261197490612a19565b83611de9565b848155905061199261198d826020612c2e565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f9101604051602081830303815290604052611a0890612a19565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611a39939291612cd8565b60405180910390a15050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a8257611a82612a40565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611af190611ae990612a19565b836000611e3f565b9050611b08611b038260008451611ee5565b611f75565b949350505050565b6000601082901b5b60f81c92915050565b6000611b308460ff8516611dbd565b90508151611b498260c581111561108757611087612b3b565b14611ba057611b638160c581111561108757611087612b3b565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610fe8565b6000611bac8787611de9565b90506000611bba8686611f86565b9050610aac828286611fc9565b6000611bd284611b10565b611bdc9084612c46565b9050611beb8686838551611fde565b6000611bf8878784612010565b90506106728184612069565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110611c4057611c40612a40565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611c99910161195c565b9050611b08815490565b6000601882901b611b18565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110611ce957611ce9612a40565b602002602001019061ffff16908161ffff1681525050825181600181518110611d1457611d14612a40565b602002602001019061ffff16908161ffff16815250506000611d3582612075565b9050808585604051602001611d4c93929190612d03565b6040516020818303038152906040529250505092915050565b611d6d610efa565b15611d7d576105ff838383612152565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a9061064490869086908690600401612cd8565b6000611dd583611dce846004612c2e565b6008021b90565b60f81c60c581111561162f5761162f612b3b565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2093929190612d40565b60408051601f1981840301815291905280516020909101209392505050565b6060611e49610efa565b15611e6057611e598484846123b4565b905061162f565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e90611ea090879087908790600401612d5f565b600060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e599190810190612d8b565b6000818311158015611ef8575083518211155b611f34578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610fe893929190612df9565b60208401611f428482612c2e565b90506000611f508585612cc1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061162f83601460006123d8565b600080805b8360ff16811015611fc157611fa36117898683611dbd565b611fad9083612c2e565b915080611fb981612c82565b915050611f8b565b509392505050565b60006020820190506103c5848483855161251b565b6000611fea85856125d9565b90506000611ff6825490565b90506120068160ff861685612610565b8083559050611882565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016120499493929190612e1e565b60408051601f198184030181529190528051602090910120949350505050565b61014982600083611fc9565b6000806000805b8451811015612127576120f283612094836002612e51565b61209f906004612c2e565b8784815181106120b1576120b1612a40565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b925084818151811061210657612106612a40565b602002602001015161ffff168261211d9190612e70565b915060010161207c565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17611b08565b600061215d846114cd565b9050600061216b8260f01c90565b90508060008061217a85611ca3565b60ff1611156121a857506020848301015160e081901c61219b906020612c2e565b6121a59083612c2e565b91505b845182146121ef5784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610fe8918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f87878760405161222293929190612cd8565b60405180910390a1600061223588611a48565b905060005b81518110156122e457600082828151811061225757612257612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16637ae4118a8b8b8b6040518463ffffffff1660e01b815260040161229e93929190612cd8565b600060405180830381600087803b1580156122b857600080fd5b505af11580156122cc573d6000803e3d6000fd5b505050505080806122dc90612c82565b91505061223a565b5060006122f18989611de9565b905060208701612304826000838961251b565b61230f866020612c2e565b6123199082612c2e565b905061232487611ca3565b60ff1660000361233a5750505050505050505050565b60006123468b8b6125d9565b858155905060008060005b61235a8b611ca3565b60ff168160ff1610156123a4576123728e8e83612010565b92506123818860ff83166126ec565b9150612390836000878561251b565b61239a8286612c2e565b9450600101612351565b5050505050505050505050505050565b606060006123c1856114cd565b90506123cf8585858461271e565b95945050505050565b606060006123e68560801c90565b90506fffffffffffffffffffffffffffffffff851660008461241e5761240d866008612e51565b61241990610100612cc1565b612421565b60005b9050600086838161243457612434612e8f565b0490506124418784612ea5565b156124ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610fe8565b602080820201604051955080860160405250808552600060208601855b8383101561250d578051851c82526001929092019160209091019089016124eb565b505050505050509392505050565b60208304840193506020838161253357612533612e8f565b069250821561258c5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116125775750506103c5565b612582600187612c2e565b9550509182019190035b602081106125b557815184556125a3600185612c2e565b935060209190910190601f190161258c565b80156103c5576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2093929190612ec7565b6000838161261e8260e01c90565b9050600061262f878760ff166126ec565b9050808510612653576126428186612cc1565b61264c9083612c2e565b915061266a565b61265d8582612cc1565b6126679083612cc1565b91505b6000612677876002612e51565b612682906004612c2e565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b6000806126fa836002612e51565b612705906004612c2e565b905061271384826008021b90565b60f01c949350505050565b606061272982611b10565b60ff168360ff1610156127495761274285858585612755565b9050611b08565b612742858585856127b5565b606060006127668360ff8616611dbd565b9050600061277f8260c581111561108757611087612b3b565b9050600061278d8888611de9565b9050600061279b8688611f86565b90506127a8828483612802565b9998505050505050505050565b606060006127c283611b10565b6127cc9085612c46565b905060006127db878784612010565b905060006127f68360ff166127f08a8a61285a565b906126ec565b90506126e08282612867565b60608267ffffffffffffffff81111561281d5761281d61292a565b6040519080825280601f01601f191660200182016040528015612847576020820181803683370190505b50905060208101611fc185858584612875565b600080611c9984846125d9565b606061162f83836000612802565b60208204840193506020828161288d5761288d612e8f565b06915081156128de5760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116128c95750506103c5565b6128d4600187612c2e565b9550509283900392015b6020831061290657835481526128f5600185612c2e565b9350601f19909201916020016128de565b82156103c5576000600019600885021c198251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156129695761296961292a565b604052919050565b600067ffffffffffffffff82111561298b5761298b61292a565b50601f01601f191660200190565b6000602082840312156129ab57600080fd5b813567ffffffffffffffff8111156129c257600080fd5b8201601f810184136129d357600080fd5b80356129e66129e182612971565b612940565b8181528560208385010111156129fb57600080fd5b81602084016020830137600091810160200191909152949350505050565b80516020808301519190811015612a3a576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612a71578181015183820152602001612a59565b838111156103c55750506000910152565b60008151808452612a9a816020860160208601612a56565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612af957601f19868403018952612ae7838351612a82565b98840198925090830190600101612acb565b5090979650505050505050565b838152606060208201526000612b1f6060830185612a82565b8281036040840152612b318185612aae565b9695505050505050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015612b8157815187529582019590820190600101612b65565b509495945050505050565b848152608060208201526000612ba56080830186612b51565b60ff85166040840152828103606084015261126a8185612a82565b60208152600061162f6020830184612aae565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103612bff57612bff612bd3565b60010192915050565b600061ffff808316818516808303821115612c2557612c25612bd3565b01949350505050565b60008219821115612c4157612c41612bd3565b500190565b600060ff821660ff841680821015612c6057612c60612bd3565b90039392505050565b828152604060208201526000611b086040830184612a82565b60006000198203612c9557612c95612bd3565b5060010190565b600060ff821660ff84168060ff03821115612cb957612cb9612bd3565b019392505050565b600082821015612cd357612cd3612bd3565b500390565b838152606060208201526000612cf16060830185612b51565b8281036040840152612b318185612a82565b83815260008351612d1b816020850160208801612a56565b80830190508351612d33816020840160208801612a56565b0160200195945050505050565b8381528260208201526060604082015260006123cf6060830184612b51565b838152606060208201526000612d786060830185612b51565b905060ff83166040830152949350505050565b600060208284031215612d9d57600080fd5b815167ffffffffffffffff811115612db457600080fd5b8201601f81018413612dc557600080fd5b8051612dd36129e182612971565b818152856020838501011115612de857600080fd5b6123cf826020830160208601612a56565b606081526000612e0c6060830186612a82565b60208301949094525060400152919050565b848152836020820152608060408201526000612e3d6080830185612b51565b905060ff8316606083015295945050505050565b6000816000190483118215151615612e6b57612e6b612bd3565b500290565b600063ffffffff808316818516808303821115612c2557612c25612bd3565b634e487b7160e01b600052601260045260246000fd5b600082612ec257634e487b7160e01b600052601260045260246000fd5b500690565b838152826020820152608060408201526000612ee66080830184612b51565b8281036060840152600681527f6c656e677468000000000000000000000000000000000000000000000000000060208201526040810191505094935050505056fea26469706673582212200e69c2976f56f84bf0a4240c1460284cf25f81919f252c27e4b19156a9d98ded64736f6c634300080d0033";
|
|
150
|
+
"0x608060405234801561001057600080fd5b50612f5d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313861fb51461003b57806317d7de7c14610050575b600080fd5b61004e610049366004612999565b610083565b005b604080517f636f72652e6d0000000000000000000000000000000000000000000000000000815290519081900360200190f35b61008b6100e2565b61009361014d565b61009b6101b2565b6100a36101fe565b6100ab61025c565b6100bf60006100b86102a8565b60016102da565b6100c76103cb565b6100cf610429565b6100d7610475565b6100df6104d3565b50565b6000806100ed61051f565b60408051600060208201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015292945090925061014991015b60405160208183030381529060405261014290612a19565b83836105e7565b5050565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201526101b0910160405160208183030381529060405261019b90612a19565b6101a361067b565b6101ab6106f3565b610772565b565b6000806101bd6107d5565b60408051600060208201527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030820152929450909250610149910161012a565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201526101b0910160405160208183030381529060405261024c90612a19565b61025461089d565b6101ab6108d7565b600080610267610956565b60408051600060208201527f5265736f757263654163636573730000000000000000000000000000000000006030820152929450909250610149910161012a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c806102d75750335b90565b604080516002808252606082018352600092602083019080368337019050509050838160008151811061030f5761030f612a40565b6020026020010181815250508260601b6bffffffffffffffffffffffff19168160018151811061034157610341612a40565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526103c59061039b90612a19565b60405184151560f81b60208201528390600090602101604051602081830303815290604052610a1e565b50505050565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201526101b0910160405160208183030381529060405261041990612a19565b610421610ab6565b6101ab610b35565b600080610434610b6f565b60408051600060208201527f53797374656d73000000000000000000000000000000000000000000000000006030820152929450909250610149910161012a565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526101b091016040516020818303038152906040526104c390612a19565b6104cb610c8a565b6101ab610d4f565b6000806104de610d89565b60408051600060208201527f66756e6353656c6563746f7273000000000000000000000000000000000000006030820152929450909250610149910161012a565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908161053b5790505090506040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508160008151811061059b5761059b612a40565b6020026020010181905250806040518060400160405280600e81526020017f4e616d6573706163654f776e65720000000000000000000000000000000000008152509092509250509091565b6105ef610efa565b15610604576105ff838383610f78565b505050565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be9061064490869086908690600401612b06565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b50505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106106b5576106b5612a40565b602002602001019060c58111156106ce576106ce612b3b565b908160c58111156106e1576106e1612b3b565b9052506106ed8161101b565b91505090565b60408051600280825260608201835260009283929190602083019080368337019050509050604f8160008151811061072d5761072d612a40565b602002602001019060c581111561074657610746612b3b565b908160c581111561075957610759612b3b565b81525050605f816001815181106106b5576106b5612a40565b61077a610efa565b1561078a576105ff838383611275565b6040517f4b9bd06c0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290523390634b9bd06c90606401610644565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816107f15790505090506040518060400160405280600d81526020017f6d6f64756c6541646472657373000000000000000000000000000000000000008152508160008151811061085157610851612a40565b6020026020010181905250806040518060400160405280601081526020017f496e7374616c6c65644d6f64756c6573000000000000000000000000000000008152509092509250509091565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106106b5576106b5612a40565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061091157610911612a40565b602002602001019060c581111561092a5761092a612b3b565b908160c581111561093d5761093d612b3b565b815250506061816001815181106106b5576106b5612a40565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816109725790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106109d2576109d2612a40565b6020026020010181905250806040518060400160405280600e81526020017f5265736f757263654163636573730000000000000000000000000000000000008152509092509250509091565b610a26610efa565b15610a3c57610a37848484846112e2565b6103c5565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d2290610a7e908790879087908790600401612b8c565b600060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b5050505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610af057610af0612a40565b602002602001019060c5811115610b0957610b09612b3b565b908160c5811115610b1c57610b1c612b3b565b815250506060816001815181106106b5576106b5612a40565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106106b5576106b5612a40565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081610b8a5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110610bea57610bea612a40565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110610c3e57610c3e612a40565b6020026020010181905250806040518060400160405280600781526020017f53797374656d73000000000000000000000000000000000000000000000000008152509092509250509091565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f81600081518110610cc557610cc5612a40565b602002602001019060c5811115610cde57610cde612b3b565b908160c5811115610cf157610cf1612b3b565b81525050604f81600181518110610d0a57610d0a612a40565b602002602001019060c5811115610d2357610d23612b3b565b908160c5811115610d3657610d36612b3b565b815250506043816002815181106106b5576106b5612a40565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106106b5576106b5612a40565b604080516003808252608082019092526060918291600091816020015b6060815260200190600190039081610da65790505090506040518060400160405280600981526020017f6e616d657370616365000000000000000000000000000000000000000000000081525081600081518110610e0657610e06612a40565b60200260200101819052506040518060400160405280600481526020017f66696c650000000000000000000000000000000000000000000000000000000081525081600181518110610e5a57610e5a612a40565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600281518110610eae57610eae612a40565b6020026020010181905250806040518060400160405280601181526020017f46756e6374696f6e53656c6563746f72730000000000000000000000000000008152509092509250509091565b6000303b808203610f0d57600191505090565b3073ffffffffffffffffffffffffffffffffffffffff1663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015610f5357600080fd5b505afa925050508015610f64575060015b610f7057600091505090565b600191505090565b6000610f83846114cd565b9050815160001480610fa05750610f9981611522565b60ff168251145b610ff157610fad81611522565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044015b60405180910390fd5b6103c58484846040516020016110079190612bc0565b604051602081830303815290604052611546565b6000601c82511115611045578151604051635318beb960e01b8152600401610fe891815260200190565b60008060008060005b865181101561117157600061108c88838151811061106e5761106e612a40565b602002602001015160c581111561108757611087612b3b565b611601565b905061ffff8116156110e25782156110d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836110da81612be9565b9450506110e7565b600192505b6110f18186612c08565b945061116686611102846004612c2e565b8a858151811061111457611114612a40565b602002602001015160c581111561112d5761112d612b3b565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b95505060010161104e565b5060008287516111819190612c46565b9050600e8160ff1611156111ad57604051635318beb960e01b815260ff82166004820152602401610fe8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b6112808260006116b9565b61128b8160016116b9565b6112948361188a565b156112d757826112a3846118a3565b6040517fda76cc74000000000000000000000000000000000000000000000000000000008152600401610fe8929190612c69565b6105ff8383836118ce565b60006112ed856114cd565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce858585856040516113249493929190612b8c565b60405180910390a1600061133786611a48565b905060005b81518110156113e857600082828151811061135957611359612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663f58a28f7898989896040518563ffffffff1660e01b81526004016113a29493929190612b8c565b600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b505050505080806113e090612c82565b91505061133c565b506113f282611b10565b60ff168460ff1610156114115761140c8686848787611b21565b61141e565b61141e8686848787611bc7565b60005b815181101561067257600082828151811061143e5761143e612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16631cd68a1a898989896040518563ffffffff1660e01b81526004016114879493929190612b8c565b600060405180830381600087803b1580156114a157600080fd5b505af11580156114b5573d6000803e3d6000fd5b505050505080806114c590612c82565b915050611421565b60006114d882611c04565b90508061151d57816114e9836118a3565b6040517f132e171c000000000000000000000000000000000000000000000000000000008152600401610fe8929190612c69565b919050565b600061152d82611ca3565b61153683611b10565b6115409190612c9c565b92915050565b60006115528383611caf565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b8160008151811061158f5761158f612a40565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d6574616461746100000000000000000000000000000000000000603082015281518082039093018352810190526115fa906115f390612a19565b8284611d65565b5050505050565b6000808260c581111561161657611616612b3b565b60ff16905060208110156116365761162f816001612c2e565b9392505050565b604081101561165657602061164c826001612c2e565b61162f9190612cc1565b606081101561166c57604061164c826001612c2e565b60608360c581111561168057611680612b3b565b0361168e5750600192915050565b60618360c58111156116a2576116a2612b3b565b036116b05750601492915050565b50600092915050565b801580156116c5575081155b156116e657604051635318beb960e01b815260006004820152602401610fe8565b60006116f183611ca3565b60ff169050600e81111561171b57604051635318beb960e01b815260048101829052602401610fe8565b600061172684611b10565b60ff169050601c6117378383612c2e565b1115611763576117478282612c2e565b604051635318beb960e01b8152600401610fe891815260200190565b60008060005b6117738585612c2e565b81101561183b57600061179a6117898984611dbd565b60c581111561108757611087612b3b565b11156117eb578381106117d9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826117e381612c82565b935050611833565b83811015611825576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161182f81612c82565b9250505b600101611769565b5082821461185f57604051635318beb960e01b815260048101839052602401610fe8565b83811461188257604051635318beb960e01b815260048101829052602401610fe8565b505050505050565b600061189c61189883611c04565b1590565b1592915050565b6060816040516020016118b891815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b8160008151811061190757611907612a40565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161197a91015b60405160208183030381529060405261197490612a19565b83611de9565b848155905061199261198d826020612c2e565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f9101604051602081830303815290604052611a0890612a19565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611a39939291612cd8565b60405180910390a15050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a8257611a82612a40565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611af190611ae990612a19565b836000611e3f565b9050611b08611b038260008451611ee5565b611f75565b949350505050565b6000601082901b5b60f81c92915050565b6000611b308460ff8516611dbd565b90508151611b498260c581111561108757611087612b3b565b14611ba057611b638160c581111561108757611087612b3b565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610fe8565b6000611bac8787611de9565b90506000611bba8686611f86565b9050610aac828286611fc9565b6000611bd284611b10565b611bdc9084612c46565b9050611beb8686838551611fde565b6000611bf8878784612010565b90506106728184612069565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110611c4057611c40612a40565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611c99910161195c565b9050611b08815490565b6000601882901b611b18565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110611ce957611ce9612a40565b602002602001019061ffff16908161ffff1681525050825181600181518110611d1457611d14612a40565b602002602001019061ffff16908161ffff16815250506000611d3582612075565b9050808585604051602001611d4c93929190612d03565b6040516020818303038152906040529250505092915050565b611d6d610efa565b15611d7d576105ff838383612152565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a9061064490869086908690600401612cd8565b6000611dd583611dce846004612c2e565b6008021b90565b60f81c60c581111561162f5761162f612b3b565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2093929190612d40565b60408051601f1981840301815291905280516020909101209392505050565b6060611e49610efa565b15611e6057611e598484846123b4565b905061162f565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e90611ea090879087908790600401612d5f565b600060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e599190810190612d8b565b6000818311158015611ef8575083518211155b611f34578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610fe893929190612df9565b60208401611f428482612c2e565b90506000611f508585612cc1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061162f83601460006123d8565b600080805b8360ff16811015611fc157611fa36117898683611dbd565b611fad9083612c2e565b915080611fb981612c82565b915050611f8b565b509392505050565b60006020820190506103c5848483855161251b565b6000611fea85856125d9565b90506000611ff6825490565b90506120068160ff861685612610565b8083559050611882565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016120499493929190612e1e565b60408051601f198184030181529190528051602090910120949350505050565b61014982600083611fc9565b6000806000805b8451811015612127576120f283612094836002612e51565b61209f906004612c2e565b8784815181106120b1576120b1612a40565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b925084818151811061210657612106612a40565b602002602001015161ffff168261211d9190612e70565b915060010161207c565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17611b08565b600061215d846114cd565b9050600061216b8260f01c90565b90508060008061217a85611ca3565b60ff1611156121a857506020848301015160e081901c61219b906020612c2e565b6121a59083612c2e565b91505b845182146121ef5784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610fe8918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f87878760405161222293929190612cd8565b60405180910390a1600061223588611a48565b905060005b81518110156122e457600082828151811061225757612257612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16637ae4118a8b8b8b6040518463ffffffff1660e01b815260040161229e93929190612cd8565b600060405180830381600087803b1580156122b857600080fd5b505af11580156122cc573d6000803e3d6000fd5b505050505080806122dc90612c82565b91505061223a565b5060006122f18989611de9565b905060208701612304826000838961251b565b61230f866020612c2e565b6123199082612c2e565b905061232487611ca3565b60ff1660000361233a5750505050505050505050565b60006123468b8b6125d9565b858155905060008060005b61235a8b611ca3565b60ff168160ff1610156123a4576123728e8e83612010565b92506123818860ff83166126ec565b9150612390836000878561251b565b61239a8286612c2e565b9450600101612351565b5050505050505050505050505050565b606060006123c1856114cd565b90506123cf8585858461271e565b95945050505050565b606060006123e68560801c90565b90506fffffffffffffffffffffffffffffffff851660008461241e5761240d866008612e51565b61241990610100612cc1565b612421565b60005b9050600086838161243457612434612e8f565b0490506124418784612ea5565b156124ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610fe8565b602080820201604051955080860160405250808552600060208601855b8383101561250d578051851c82526001929092019160209091019089016124eb565b505050505050509392505050565b60208304840193506020838161253357612533612e8f565b069250821561258c5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116125775750506103c5565b612582600187612c2e565b9550509182019190035b602081106125b557815184556125a3600185612c2e565b935060209190910190601f190161258c565b80156103c5576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2093929190612ec7565b6000838161261e8260e01c90565b9050600061262f878760ff166126ec565b9050808510612653576126428186612cc1565b61264c9083612c2e565b915061266a565b61265d8582612cc1565b6126679083612cc1565b91505b6000612677876002612e51565b612682906004612c2e565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b6000806126fa836002612e51565b612705906004612c2e565b905061271384826008021b90565b60f01c949350505050565b606061272982611b10565b60ff168360ff1610156127495761274285858585612755565b9050611b08565b612742858585856127b5565b606060006127668360ff8616611dbd565b9050600061277f8260c581111561108757611087612b3b565b9050600061278d8888611de9565b9050600061279b8688611f86565b90506127a8828483612802565b9998505050505050505050565b606060006127c283611b10565b6127cc9085612c46565b905060006127db878784612010565b905060006127f68360ff166127f08a8a61285a565b906126ec565b90506126e08282612867565b60608267ffffffffffffffff81111561281d5761281d61292a565b6040519080825280601f01601f191660200182016040528015612847576020820181803683370190505b50905060208101611fc185858584612875565b600080611c9984846125d9565b606061162f83836000612802565b60208204840193506020828161288d5761288d612e8f565b06915081156128de5760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116128c95750506103c5565b6128d4600187612c2e565b9550509283900392015b6020831061290657835481526128f5600185612c2e565b9350601f19909201916020016128de565b82156103c5576000600019600885021c198251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156129695761296961292a565b604052919050565b600067ffffffffffffffff82111561298b5761298b61292a565b50601f01601f191660200190565b6000602082840312156129ab57600080fd5b813567ffffffffffffffff8111156129c257600080fd5b8201601f810184136129d357600080fd5b80356129e66129e182612971565b612940565b8181528560208385010111156129fb57600080fd5b81602084016020830137600091810160200191909152949350505050565b80516020808301519190811015612a3a576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612a71578181015183820152602001612a59565b838111156103c55750506000910152565b60008151808452612a9a816020860160208601612a56565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612af957601f19868403018952612ae7838351612a82565b98840198925090830190600101612acb565b5090979650505050505050565b838152606060208201526000612b1f6060830185612a82565b8281036040840152612b318185612aae565b9695505050505050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015612b8157815187529582019590820190600101612b65565b509495945050505050565b848152608060208201526000612ba56080830186612b51565b60ff85166040840152828103606084015261126a8185612a82565b60208152600061162f6020830184612aae565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103612bff57612bff612bd3565b60010192915050565b600061ffff808316818516808303821115612c2557612c25612bd3565b01949350505050565b60008219821115612c4157612c41612bd3565b500190565b600060ff821660ff841680821015612c6057612c60612bd3565b90039392505050565b828152604060208201526000611b086040830184612a82565b60006000198203612c9557612c95612bd3565b5060010190565b600060ff821660ff84168060ff03821115612cb957612cb9612bd3565b019392505050565b600082821015612cd357612cd3612bd3565b500390565b838152606060208201526000612cf16060830185612b51565b8281036040840152612b318185612a82565b83815260008351612d1b816020850160208801612a56565b80830190508351612d33816020840160208801612a56565b0160200195945050505050565b8381528260208201526060604082015260006123cf6060830184612b51565b838152606060208201526000612d786060830185612b51565b905060ff83166040830152949350505050565b600060208284031215612d9d57600080fd5b815167ffffffffffffffff811115612db457600080fd5b8201601f81018413612dc557600080fd5b8051612dd36129e182612971565b818152856020838501011115612de857600080fd5b6123cf826020830160208601612a56565b606081526000612e0c6060830186612a82565b60208301949094525060400152919050565b848152836020820152608060408201526000612e3d6080830185612b51565b905060ff8316606083015295945050505050565b6000816000190483118215151615612e6b57612e6b612bd3565b500290565b600063ffffffff808316818516808303821115612c2557612c25612bd3565b634e487b7160e01b600052601260045260246000fd5b600082612ec257634e487b7160e01b600052601260045260246000fd5b500690565b838152826020820152608060408201526000612ee66080830184612b51565b8281036060840152600681527f6c656e677468000000000000000000000000000000000000000000000000000060208201526040810191505094935050505056fea26469706673582212205185c1eefb779b59c0e6f43f7f5ba4fc9999287e49a9175c399fa893731be78264736f6c634300080d0033";
|
|
151
151
|
|
|
152
152
|
type CoreModuleConstructorParams =
|
|
153
153
|
| [signer?: Signer]
|
|
@@ -303,7 +303,7 @@ const _abi = [
|
|
|
303
303
|
];
|
|
304
304
|
|
|
305
305
|
const _bytecode =
|
|
306
|
-
"
|
|
306
|
+
"0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102a68061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101ff565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526101619161023b565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb919061024e565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b818111156101f4576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061023360048301846101c4565b949350505050565b600061024782846101c4565b9392505050565b60006020828403121561026057600080fd5b8151801515811461024757600080fdfea2646970667358221220ca83665c7bda4f70b3f0d36525100ed1d00ecc3129e6b444cd559dc1a8be5a4364736f6c634300080d0033";
|
|
307
307
|
|
|
308
308
|
type DSTestConstructorParams =
|
|
309
309
|
| [signer?: Signer]
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { Contract, Signer, utils } from "ethers";
|
|
6
6
|
import { Provider } from "@ethersproject/providers";
|
|
7
|
-
import type {
|
|
7
|
+
import type { IBaseWorld, IBaseWorldInterface } from "../IBaseWorld";
|
|
8
8
|
|
|
9
9
|
const _abi = [
|
|
10
10
|
{
|
|
@@ -864,12 +864,15 @@ const _abi = [
|
|
|
864
864
|
},
|
|
865
865
|
];
|
|
866
866
|
|
|
867
|
-
export class
|
|
867
|
+
export class IBaseWorld__factory {
|
|
868
868
|
static readonly abi = _abi;
|
|
869
|
-
static createInterface():
|
|
870
|
-
return new utils.Interface(_abi) as
|
|
869
|
+
static createInterface(): IBaseWorldInterface {
|
|
870
|
+
return new utils.Interface(_abi) as IBaseWorldInterface;
|
|
871
871
|
}
|
|
872
|
-
static connect(
|
|
873
|
-
|
|
872
|
+
static connect(
|
|
873
|
+
address: string,
|
|
874
|
+
signerOrProvider: Signer | Provider
|
|
875
|
+
): IBaseWorld {
|
|
876
|
+
return new Contract(address, _abi, signerOrProvider) as IBaseWorld;
|
|
874
877
|
}
|
|
875
878
|
}
|