diff --git a/abis/BFactory.json b/abis/BFactory.json index 6f3d022..51bfdca 100644 --- a/abis/BFactory.json +++ b/abis/BFactory.json @@ -12,7 +12,7 @@ }, { "internalType": "address", - "name": "_opfCollector", + "name": "_opcCollector", "type": "address" }, { @@ -48,7 +48,7 @@ { "indexed": false, "internalType": "address", - "name": "basetokenAddress", + "name": "baseTokenAddress", "type": "address" }, { @@ -80,6 +80,44 @@ "name": "InstanceDeployed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "PoolTemplateAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "PoolTemplateRemoved", + "type": "event" + }, { "inputs": [], "name": "BONE", @@ -288,6 +326,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getPoolTemplates", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -309,7 +360,26 @@ }, { "inputs": [], - "name": "opfCollector", + "name": "opcCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poolTemplates", "outputs": [ { "internalType": "address", @@ -321,8 +391,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161071938038061071983398101604081905261002f91610207565b6001600160a01b0383166100a05760405162461bcd60e51b815260206004820152602d60248201527f42466163746f72793a20696e76616c69642062706f6f6c2074656d706c61746560448201526c207a65726f206164647265737360981b60648201526084015b60405180910390fd5b6001600160a01b0382166100f65760405162461bcd60e51b815260206004820152601660248201527f42466163746f72793a207a65726f2061646472657373000000000000000000006044820152606401610097565b600080546001600160a01b0319166001600160a01b03841617905561013c836001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b8051156101e35760005b81518110156101e15760006001600160a01b0316336001600160a01b03168383815181106101765761017661031f565b602090810291909101810151604080516000808252938101849052908101929092526001600160a01b0316907fbb6121447d29a04cc37bfd93cdf6a9dd08229f2d941116c1528f04698c4e790e9060600160405180910390a4806101d9816102f6565b915050610146565b505b50505061034b565b80516001600160a01b038116811461020257600080fd5b919050565b60008060006060848603121561021c57600080fd5b610225846101eb565b925060206102348186016101eb565b60408601519093506001600160401b038082111561025157600080fd5b818701915087601f83011261026557600080fd5b81518181111561027757610277610335565b8060051b604051601f19603f8301168101818110858211171561029c5761029c610335565b604052828152858101935084860182860187018c10156102bb57600080fd5b600095505b838610156102e5576102d1816101eb565b8552600195909501949386019386016102c0565b508096505050505050509250925092565b600060001982141561031857634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6103bf8061035a6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063b7b800a4116100a2578063c07c00fe11610071578063c07c00fe146101b8578063c36596a61461013e578063c6580d12146101f4578063e4a28a521461011b578063ec093021146101fc57600080fd5b8063b7b800a414610198578063ba019dab146101a0578063bc063e1a146101a8578063bc694ea2146101b057600080fd5b8063867378c5116100e9578063867378c5146101555780639381cd2b1461015d578063992e2a9214610165578063a28f78f11461016d578063b0e0d1361461019857600080fd5b806309a3bbe41461011b578063189d00ca14610136578063218b53821461013e57806376c7a3c71461014d575b600080fd5b610123610204565b6040519081526020015b60405180910390f35b61012361021a565b610123670de0b6b3a764000081565b610123610231565b610123610246565b61012361025d565b610123610270565b600054610180906001600160a01b031681565b6040516001600160a01b03909116815260200161012d565b610123600281565b610123600181565b61012361028e565b6101236102a1565b6101e46101c63660046102d3565b6001600160a01b031660009081526001602052604090205460ff1690565b604051901515815260200161012d565b610123600081565b6101236102c0565b610217670de0b6b3a7640000603261033d565b81565b6102176402540be400670de0b6b3a764000061031b565b610217620f4240670de0b6b3a764000061031b565b61021764e8d4a51000670de0b6b3a764000061031b565b610217670de0b6b3a7640000606461033d565b6102836003670de0b6b3a764000061031b565b610217906001610303565b610217600a670de0b6b3a764000061031b565b60016102b6670de0b6b3a7640000600261033d565b610217919061035c565b6102176002670de0b6b3a764000061031b565b6000602082840312156102e557600080fd5b81356001600160a01b03811681146102fc57600080fd5b9392505050565b6000821982111561031657610316610373565b500190565b60008261033857634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561035757610357610373565b500290565b60008282101561036e5761036e610373565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f4f9367d9939a8dac54a482bb30fc85ba7649a673baccad6dd6c89f740b79f9f64736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063b7b800a4116100a2578063c07c00fe11610071578063c07c00fe146101b8578063c36596a61461013e578063c6580d12146101f4578063e4a28a521461011b578063ec093021146101fc57600080fd5b8063b7b800a414610198578063ba019dab146101a0578063bc063e1a146101a8578063bc694ea2146101b057600080fd5b8063867378c5116100e9578063867378c5146101555780639381cd2b1461015d578063992e2a9214610165578063a28f78f11461016d578063b0e0d1361461019857600080fd5b806309a3bbe41461011b578063189d00ca14610136578063218b53821461013e57806376c7a3c71461014d575b600080fd5b610123610204565b6040519081526020015b60405180910390f35b61012361021a565b610123670de0b6b3a764000081565b610123610231565b610123610246565b61012361025d565b610123610270565b600054610180906001600160a01b031681565b6040516001600160a01b03909116815260200161012d565b610123600281565b610123600181565b61012361028e565b6101236102a1565b6101e46101c63660046102d3565b6001600160a01b031660009081526001602052604090205460ff1690565b604051901515815260200161012d565b610123600081565b6101236102c0565b610217670de0b6b3a7640000603261033d565b81565b6102176402540be400670de0b6b3a764000061031b565b610217620f4240670de0b6b3a764000061031b565b61021764e8d4a51000670de0b6b3a764000061031b565b610217670de0b6b3a7640000606461033d565b6102836003670de0b6b3a764000061031b565b610217906001610303565b610217600a670de0b6b3a764000061031b565b60016102b6670de0b6b3a7640000600261033d565b610217919061035c565b6102176002670de0b6b3a764000061031b565b6000602082840312156102e557600080fd5b81356001600160a01b03811681146102fc57600080fd5b9392505050565b6000821982111561031657610316610373565b500190565b60008261033857634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561035757610357610373565b500290565b60008282101561036e5761036e610373565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f4f9367d9939a8dac54a482bb30fc85ba7649a673baccad6dd6c89f740b79f9f64736f6c63430008070033", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000a3338038062000a33833981016040819052620000349162000378565b6001600160a01b038316620000a65760405162461bcd60e51b815260206004820152602d60248201527f42466163746f72793a20696e76616c69642062706f6f6c2074656d706c61746560448201526c207a65726f206164647265737360981b60648201526084015b60405180910390fd5b6001600160a01b038216620000fe5760405162461bcd60e51b815260206004820152601660248201527f42466163746f72793a207a65726f20616464726573730000000000000000000060448201526064016200009d565b600080546001600160a01b0319166001600160a01b0384161790556200012483620001dc565b805115620001d35760005b8151811015620001d15760006001600160a01b0316336001600160a01b031683838151811062000163576200016362000472565b602090810291909101810151604080516000808252938101849052908101929092526001600160a01b0316907fbb6121447d29a04cc37bfd93cdf6a9dd08229f2d941116c1528f04698c4e790e9060600160405180910390a480620001c88162000488565b9150506200012f565b505b505050620004b2565b6001600160a01b038116620002485760405162461bcd60e51b815260206004820152602b60248201527f466163746f7279526f757465723a20496e76616c696420706f6f6c54656d706c60448201526a617465206164647265737360a81b60648201526084016200009d565b6200025381620002d3565b620002d05760018054808201825560009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038416908117909155604051909133917fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac9190a35b50565b6000805b6001548110156200033c57826001600160a01b03166001828154811062000302576200030262000472565b6000918252602090912001546001600160a01b03161415620003275750600192915050565b80620003338162000488565b915050620002d7565b50600092915050565b80516001600160a01b03811681146200035d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156200038e57600080fd5b620003998462000345565b92506020620003aa81860162000345565b60408601519093506001600160401b0380821115620003c857600080fd5b818701915087601f830112620003dd57600080fd5b815181811115620003f257620003f262000362565b8060051b604051601f19603f830116810181811085821117156200041a576200041a62000362565b60405291825284820192508381018501918a8311156200043957600080fd5b938501935b828510156200046257620004528562000345565b845293850193928501926200043e565b8096505050505050509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600019821415620004ab57634e487b7160e01b600052601160045260246000fd5b5060010190565b61057180620004c26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063b0e0d136116100ad578063c07c00fe11610071578063c07c00fe146101f6578063c36596a61461017f578063c6580d1214610219578063e4a28a5214610161578063ec0930211461022157600080fd5b8063b0e0d136146101d6578063b7b800a4146101d6578063ba019dab146101de578063bc063e1a146101e6578063bc694ea2146101ee57600080fd5b806350cbbe76116100f457806350cbbe76146101a357806376c7a3c7146101b6578063867378c5146101be5780639381cd2b146101c6578063992e2a92146101ce57600080fd5b8063038142381461013157806309a3bbe414610161578063189d00ca14610177578063218b53821461017f578063241c7a6d1461018e575b600080fd5b600054610144906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610169610229565b604051908152602001610158565b61016961023f565b610169670de0b6b3a764000081565b610196610256565b60405161015891906103ee565b6101446101b136600461043b565b6102b8565b6101696102e2565b6101696102f7565b61016961030e565b610169610321565b610169600281565b610169600181565b61016961033f565b610169610352565b610209610204366004610454565b610371565b6040519015158152602001610158565b610169600081565b6101696103db565b61023c670de0b6b3a7640000603261049a565b81565b61023c6402540be400670de0b6b3a76400006104b9565b606060018054806020026020016040519081016040528092919081815260200182805480156102ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610290575b5050505050905090565b600181815481106102c857600080fd5b6000918252602090912001546001600160a01b0316905081565b61023c620f4240670de0b6b3a76400006104b9565b61023c64e8d4a51000670de0b6b3a76400006104b9565b61023c670de0b6b3a7640000606461049a565b6103346003670de0b6b3a76400006104b9565b61023c9060016104db565b61023c600a670de0b6b3a76400006104b9565b6001610367670de0b6b3a7640000600261049a565b61023c91906104f3565b6000805b6001548110156103d257826001600160a01b03166001828154811061039c5761039c61050a565b6000918252602090912001546001600160a01b031614156103c05750600192915050565b806103ca81610520565b915050610375565b50600092915050565b61023c6002670de0b6b3a76400006104b9565b6020808252825182820181905260009190848201906040850190845b8181101561042f5783516001600160a01b03168352928401929184019160010161040a565b50909695505050505050565b60006020828403121561044d57600080fd5b5035919050565b60006020828403121561046657600080fd5b81356001600160a01b038116811461047d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156104b4576104b4610484565b500290565b6000826104d657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156104ee576104ee610484565b500190565b60008282101561050557610505610484565b500390565b634e487b7160e01b600052603260045260246000fd5b600060001982141561053457610534610484565b506001019056fea2646970667358221220b669d4fa5939209122b2ff485080318e52d8d3c1b491fc9de92ae6cb2d7fa6ad64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063b0e0d136116100ad578063c07c00fe11610071578063c07c00fe146101f6578063c36596a61461017f578063c6580d1214610219578063e4a28a5214610161578063ec0930211461022157600080fd5b8063b0e0d136146101d6578063b7b800a4146101d6578063ba019dab146101de578063bc063e1a146101e6578063bc694ea2146101ee57600080fd5b806350cbbe76116100f457806350cbbe76146101a357806376c7a3c7146101b6578063867378c5146101be5780639381cd2b146101c6578063992e2a92146101ce57600080fd5b8063038142381461013157806309a3bbe414610161578063189d00ca14610177578063218b53821461017f578063241c7a6d1461018e575b600080fd5b600054610144906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610169610229565b604051908152602001610158565b61016961023f565b610169670de0b6b3a764000081565b610196610256565b60405161015891906103ee565b6101446101b136600461043b565b6102b8565b6101696102e2565b6101696102f7565b61016961030e565b610169610321565b610169600281565b610169600181565b61016961033f565b610169610352565b610209610204366004610454565b610371565b6040519015158152602001610158565b610169600081565b6101696103db565b61023c670de0b6b3a7640000603261049a565b81565b61023c6402540be400670de0b6b3a76400006104b9565b606060018054806020026020016040519081016040528092919081815260200182805480156102ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610290575b5050505050905090565b600181815481106102c857600080fd5b6000918252602090912001546001600160a01b0316905081565b61023c620f4240670de0b6b3a76400006104b9565b61023c64e8d4a51000670de0b6b3a76400006104b9565b61023c670de0b6b3a7640000606461049a565b6103346003670de0b6b3a76400006104b9565b61023c9060016104db565b61023c600a670de0b6b3a76400006104b9565b6001610367670de0b6b3a7640000600261049a565b61023c91906104f3565b6000805b6001548110156103d257826001600160a01b03166001828154811061039c5761039c61050a565b6000918252602090912001546001600160a01b031614156103c05750600192915050565b806103ca81610520565b915050610375565b50600092915050565b61023c6002670de0b6b3a76400006104b9565b6020808252825182820181905260009190848201906040850190845b8181101561042f5783516001600160a01b03168352928401929184019160010161040a565b50909695505050505050565b60006020828403121561044d57600080fd5b5035919050565b60006020828403121561046657600080fd5b81356001600160a01b038116811461047d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156104b4576104b4610484565b500290565b6000826104d657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156104ee576104ee610484565b500190565b60008282101561050557610505610484565b500390565b634e487b7160e01b600052603260045260246000fd5b600060001982141561053457610534610484565b506001019056fea2646970667358221220b669d4fa5939209122b2ff485080318e52d8d3c1b491fc9de92ae6cb2d7fa6ad64736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/abis/BMath.json b/abis/BMath.json index 76e48fb..b468145 100644 --- a/abis/BMath.json +++ b/abis/BMath.json @@ -244,7 +244,7 @@ }, { "inputs": [], - "name": "_swapMarketFee", + "name": "_swapPublishMarketFee", "outputs": [ { "internalType": "uint256", @@ -276,7 +276,7 @@ }, { "inputs": [], - "name": "getOPFFee", + "name": "getOPCFee", "outputs": [ { "internalType": "uint256", @@ -295,7 +295,7 @@ "type": "address" } ], - "name": "marketFees", + "name": "publishMarketFees", "outputs": [ { "internalType": "uint256", @@ -307,8 +307,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610460806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806349e9350f116100f457806349e9350f146101a2578063700dd7e8146101ab57806376c7a3c7146101b3578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b538214610153578063300621921461016257806331e2761b14610182575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b61013961017036600461035b565b60056020526000908152604090205481565b61013961019036600461035b565b60066020526000908152604090205481565b61013960005481565b610139610230565b6101396102b9565b6101396102ce565b6101396102e5565b6101396102f8565b610139600281565b610139600181565b610139610316565b610139610329565b610139600081565b610139610348565b610216670de0b6b3a764000060326103de565b81565b6102166402540be400670de0b6b3a76400006103bc565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061038b565b905090565b610216620f4240670de0b6b3a76400006103bc565b61021664e8d4a51000670de0b6b3a76400006103bc565b610216670de0b6b3a764000060646103de565b61030b6003670de0b6b3a76400006103bc565b6102169060016103a4565b610216600a670de0b6b3a76400006103bc565b600161033e670de0b6b3a764000060026103de565b61021691906103fd565b6102166002670de0b6b3a76400006103bc565b60006020828403121561036d57600080fd5b81356001600160a01b038116811461038457600080fd5b9392505050565b60006020828403121561039d57600080fd5b5051919050565b600082198211156103b7576103b7610414565b500190565b6000826103d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156103f8576103f8610414565b500290565b60008282101561040f5761040f610414565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220699b1f34bf1d54caa297e60d6fddebd8dc902d2243c98d4a62f4485302305a1064736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806349e9350f116100f457806349e9350f146101a2578063700dd7e8146101ab57806376c7a3c7146101b3578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b538214610153578063300621921461016257806331e2761b14610182575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b61013961017036600461035b565b60056020526000908152604090205481565b61013961019036600461035b565b60066020526000908152604090205481565b61013960005481565b610139610230565b6101396102b9565b6101396102ce565b6101396102e5565b6101396102f8565b610139600281565b610139600181565b610139610316565b610139610329565b610139600081565b610139610348565b610216670de0b6b3a764000060326103de565b81565b6102166402540be400670de0b6b3a76400006103bc565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061038b565b905090565b610216620f4240670de0b6b3a76400006103bc565b61021664e8d4a51000670de0b6b3a76400006103bc565b610216670de0b6b3a764000060646103de565b61030b6003670de0b6b3a76400006103bc565b6102169060016103a4565b610216600a670de0b6b3a76400006103bc565b600161033e670de0b6b3a764000060026103de565b61021691906103fd565b6102166002670de0b6b3a76400006103bc565b60006020828403121561036d57600080fd5b81356001600160a01b038116811461038457600080fd5b9392505050565b60006020828403121561039d57600080fd5b5051919050565b600082198211156103b7576103b7610414565b500190565b6000826103d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156103f8576103f8610414565b500290565b60008282101561040f5761040f610414565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220699b1f34bf1d54caa297e60d6fddebd8dc902d2243c98d4a62f4485302305a1064736f6c63430008070033", + "bytecode": "0x608060405234801561001057600080fd5b50610451806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806376c7a3c7116100f457806376c7a3c71461018a5780637a284be4146101925780637c5918b31461019b578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b53821461015357806329b88a6a14610162578063300621921461016a575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b610139610230565b61013961017836600461034c565b60056020526000908152604090205481565b6101396102aa565b61013960005481565b6101396101a936600461034c565b60066020526000908152604090205481565b6101396102bf565b6101396102d6565b6101396102e9565b610139600281565b610139600181565b610139610307565b61013961031a565b610139600081565b610139610339565b610216670de0b6b3a76400006032610392565b81565b6102166402540be400670de0b6b3a76400006103b1565b6002546004805460405163b8421e2b60e01b81526001600160a01b0391821692810192909252600092169063b8421e2b90602401602060405180830381865afa158015610281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a591906103d3565b905090565b610216620f4240670de0b6b3a76400006103b1565b61021664e8d4a51000670de0b6b3a76400006103b1565b610216670de0b6b3a76400006064610392565b6102fc6003670de0b6b3a76400006103b1565b6102169060016103ec565b610216600a670de0b6b3a76400006103b1565b600161032f670de0b6b3a76400006002610392565b6102169190610404565b6102166002670de0b6b3a76400006103b1565b60006020828403121561035e57600080fd5b81356001600160a01b038116811461037557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156103ac576103ac61037c565b500290565b6000826103ce57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156103e557600080fd5b5051919050565b600082198211156103ff576103ff61037c565b500190565b6000828210156104165761041661037c565b50039056fea2646970667358221220bb7675d200528b1ac138059c595a95fd2adb2b36b61e0bac3f6baeafc4fc887c64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806376c7a3c7116100f457806376c7a3c71461018a5780637a284be4146101925780637c5918b31461019b578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b53821461015357806329b88a6a14610162578063300621921461016a575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b610139610230565b61013961017836600461034c565b60056020526000908152604090205481565b6101396102aa565b61013960005481565b6101396101a936600461034c565b60066020526000908152604090205481565b6101396102bf565b6101396102d6565b6101396102e9565b610139600281565b610139600181565b610139610307565b61013961031a565b610139600081565b610139610339565b610216670de0b6b3a76400006032610392565b81565b6102166402540be400670de0b6b3a76400006103b1565b6002546004805460405163b8421e2b60e01b81526001600160a01b0391821692810192909252600092169063b8421e2b90602401602060405180830381865afa158015610281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a591906103d3565b905090565b610216620f4240670de0b6b3a76400006103b1565b61021664e8d4a51000670de0b6b3a76400006103b1565b610216670de0b6b3a76400006064610392565b6102fc6003670de0b6b3a76400006103b1565b6102169060016103ec565b610216600a670de0b6b3a76400006103b1565b600161032f670de0b6b3a76400006002610392565b6102169190610404565b6102166002670de0b6b3a76400006103b1565b60006020828403121561035e57600080fd5b81356001600160a01b038116811461037557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156103ac576103ac61037c565b500290565b6000826103ce57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156103e557600080fd5b5051919050565b600082198211156103ff576103ff61037c565b500190565b6000828210156104165761041661037c565b50039056fea2646970667358221220bb7675d200528b1ac138059c595a95fd2adb2b36b61e0bac3f6baeafc4fc887c64736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/abis/BPool.json b/abis/BPool.json index 1e513da..9407b9d 100644 --- a/abis/BPool.json +++ b/abis/BPool.json @@ -177,19 +177,19 @@ { "indexed": true, "internalType": "address", - "name": "dataToken", + "name": "datatoken", "type": "address" }, { "indexed": false, "internalType": "uint256", - "name": "dataTokenAmountIn", + "name": "datatokenAmountIn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", - "name": "dataTokenWeight", + "name": "datatokenWeight", "type": "uint256" } ], @@ -295,7 +295,7 @@ { "indexed": false, "internalType": "address", - "name": "OPFWallet", + "name": "OPCWallet", "type": "address" }, { @@ -311,7 +311,7 @@ "type": "uint256" } ], - "name": "OPFFee", + "name": "OPCFee", "type": "event" }, { @@ -630,7 +630,7 @@ }, { "inputs": [], - "name": "_opfCollector", + "name": "_opcCollector", "outputs": [ { "internalType": "address", @@ -839,7 +839,7 @@ }, { "inputs": [], - "name": "collectOPF", + "name": "collectOPC", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1109,7 +1109,7 @@ }, { "inputs": [], - "name": "getCurrentOPFFees", + "name": "getCurrentOPCFees", "outputs": [ { "internalType": "address[]", @@ -1140,7 +1140,7 @@ }, { "inputs": [], - "name": "getDataTokenAddress", + "name": "getDatatokenAddress", "outputs": [ { "internalType": "address", @@ -1183,6 +1183,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "getMarketFee", @@ -1230,7 +1243,7 @@ }, { "inputs": [], - "name": "getOPFFee", + "name": "getOPCFee", "outputs": [ { "internalType": "uint256", @@ -1552,17 +1565,17 @@ "inputs": [ { "internalType": "address", - "name": "dataTokenAddress", + "name": "datatokenAddress", "type": "address" }, { "internalType": "uint256", - "name": "dataTokenAmount", + "name": "datatokenAmount", "type": "uint256" }, { "internalType": "uint256", - "name": "dataTokenWeight", + "name": "datatokenWeight", "type": "uint256" }, { @@ -1737,8 +1750,8 @@ "type": "function" } ], - "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600a91906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d91600b916200008f565b50600c805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b615ea280620001826000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c80638d4e40831161022b578063c44a428311610130578063dd62ed3e116100b8578063f1b8a9b711610087578063f1b8a9b7146108b1578063f68045a5146108c4578063f8b2cb4f146108cc578063fde924f7146108df578063ff9b1850146108f157600080fd5b8063dd62ed3e1461085d578063e4a28a52146104c3578063ec09302114610896578063f0f13f0b1461089e57600080fd5b8063caa01148116100ff578063caa011481461081f578063cc77828d14610832578063cd2ed8fb1461083a578063d4cadf6814610842578063d73dd6231461084a57600080fd5b8063c44a4283146107e6578063c6580d12146107fc578063c8ff183314610804578063c98a59cf1461080c57600080fd5b8063b0e0d136116101b3578063bc694ea211610182578063bc694ea21461078e578063be3bbd2e14610796578063c070a6d8146107ab578063c36596a6146104f0578063c421a3fc146107be57600080fd5b8063b0e0d13614610776578063b7b800a414610776578063ba019dab1461077e578063bc063e1a1461078657600080fd5b806395d89b41116101fa57806395d89b411461072d578063992e2a9214610735578063a3b3a16d1461073d578063a9059cbb14610750578063b02f0b731461076357600080fd5b80638d4e4083146106f8578063936c34771461070a5780639381cd2b14610712578063948d8ce61461071a57600080fd5b80633950b3fd116103315780636d06dfa0116102b957806376c7a3c71161028857806376c7a3c7146106b75780637a284be4146106bf5780637c5918b3146106c857806380ca7308146106e8578063867378c5146106f057600080fd5b80636d06dfa014610660578063700dd7e814610673578063703305181461067b57806370a082311461068e57600080fd5b80634f69c0d4116103005780634f69c0d41461060c5780635db342771461061f5780635e123add14610632578063638c9e951461063a578063661884631461064d57600080fd5b80633950b3fd146105c2578063430ed5d0146105d557806346ab38f1146105e85780634df947d0146105fb57600080fd5b8063218b5382116103b4578063300621921161038357806330062192146105515780633018205f14610571578063313ce5671461058857806334e199071461059d578063392e53cd146105b057600080fd5b8063218b5382146104f057806323b872dd146104ff5780632eebd6ae146105125780632f37b6241461052557600080fd5b8063095ea7b3116103fb578063095ea7b3146104a057806309a3bbe4146104c357806309ef3f5b146104cb57806318160ddd146104e0578063189d00ca146104e857600080fd5b806302c967481461042d57806304ad79541461045357806306fdde0314610478578063079492d41461048d575b600080fd5b61044061043b3660046156d1565b610904565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b03909116815260200161044a565b610480610d65565b60405161044a9190615730565b61044061049b366004615763565b610df7565b6104b36104ae36600461579f565b610e81565b604051901515815260200161044a565b610440610edc565b6104de6104d93660046157c9565b610ef2565b005b600954610440565b61044061112e565b610440670de0b6b3a764000081565b6104b361050d366004615763565b611145565b610440610520366004615821565b611299565b6104b3610533366004615863565b6001600160a01b031660009081526010602052604090205460ff1690565b61044061055f366004615863565b60056020526000908152604090205481565b600c546201000090046001600160a01b0316610460565b600c5460405160ff909116815260200161044a565b6104de6105ab36600461587e565b6112fa565b601254600160a01b900460ff166104b3565b6104406105d036600461579f565b611433565b6104406105e336600461579f565b61149b565b6104406105f63660046156d1565b6114fb565b6004546001600160a01b0316610460565b6104de61061a3660046158dc565b611901565b61044061062d3660046156d1565b611b28565b600054610440565b600d54610460906001600160a01b031681565b6104b361065b36600461579f565b611ee9565b61044061066e3660046156d1565b611fbf565b61044061239b565b6104de610689366004615863565b612415565b61044061069c366004615863565b6001600160a01b031660009081526007602052604090205490565b610440612512565b61044060005481565b6104406106d6366004615863565b60066020526000908152604090205481565b6104de612527565b6104406126b9565b600e54600160a01b900460ff166104b3565b6104406126d0565b610440612702565b610440610728366004615863565b612715565b61048061276c565b61044061277b565b61044061074b36600461579f565b612799565b6104b361075e36600461579f565b6127f9565b6104de6107713660046158dc565b61280f565b610440600281565b610440600181565b610440612a6b565b610440612a7e565b61079e612a9d565b60405161044a919061596c565b6104b36107b936600461599e565b612b50565b6107d16107cc366004615a4b565b612dc0565b6040805192835260208301919091520161044a565b6107ee613267565b60405161044a929190615a8d565b610440600081565b6107ee6133d7565b6107d161081a366004615a4b565b61353c565b61044061082d366004615821565b613980565b61079e6139d6565b600f54610440565b600154610440565b6104b361085836600461579f565b613a01565b61044061086b366004615ae4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610440613a74565b600e54610460906001600160a01b031681565b6104406108bf366004615863565b613a87565b6104de613ae5565b6104406108da366004615863565b613c53565b600c54600160b01b900460ff166104b3565b6104406108ff36600461579f565b613ca6565b600c54600090610100900460ff16156109385760405162461bcd60e51b815260040161092f90615b17565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109705760405162461bcd60e51b815260040161092f90615b3c565b61097984613d06565b6001600160a01b03841660009081526010602052604090206003908101546109bd916109ad90670de0b6b3a7640000615b93565b6109b8906001615ba7565b613d61565b8311156109dc5760405162461bcd60e51b815260040161092f90615bbf565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a119392919088613e46565b915081610a305760405162461bcd60e51b815260040161092f90615bea565b82821115610a505760405162461bcd60e51b815260040161092f90615c13565b610a5e816003015485613f0a565b60038201556000610a6f8382613d61565b604080518781524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051838152600080516020615e0d8339815191529060200160405180910390a1610ad03384613f67565b610ae2610add8483613f0a565b613f71565b600254610af8906001600160a01b031682613f7a565b610b03863387613f84565b6003546000906001600160a01b0388811691161415610b2e57506004546001600160a01b0316610b3c565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b749291169085908990600401615c39565b602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190615c5d565b15610d5057600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610bf1939291908a613f9d565b9050610c01826003015482613f0a565b6003830155610c11866000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c54610c6e906201000090046001600160a01b031687613f67565b610c7b610add8786613f0a565b600254610c91906001600160a01b031685613f7a565b600c54610caf9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b50505050600080516020615ded83398151915286604051610d4591815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d7490615c7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da090615c7a565b8015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e225760405162461bcd60e51b815260040161092f90615b17565b610e2b84613d06565b610e3483613d06565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e7593919088614067565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e4d83398151915290610eca9086815260200190565b60405180910390a35060015b92915050565b610eef670de0b6b3a76400006032615cb5565b81565b600c54610100900460ff1615610f1a5760405162461bcd60e51b815260040161092f90615b17565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f835760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b604482015260640161092f565b6003546001600160a01b03878116911614610fe05760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f41444452455353000000604482015260640161092f565b6004546001600160a01b0384811691161461103d5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f41444452455353000000604482015260640161092f565b6110488686866140f3565b604080518681524260208201526001600160a01b038816913391600080516020615e2d833981519152910160405180910390a36110868383836140f3565b604080518381524260208201526001600160a01b038516913391600080516020615e2d833981519152910160405180910390a36110c16142dd565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610eef6402540be400670de0b6b3a7640000615b93565b6000336001600160a01b038516148061118157506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111c55760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b604482015260640161092f565b6111d084848461433c565b336001600160a01b0385161480159061120e57506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b1561128f576001600160a01b03841660009081526008602090815260408083203384529091529020546112419083613f0a565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e4d833981519152910160405180910390a35b5060019392505050565b60006112a485613d06565b6112ad84613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef939190898961444e565b979650505050505050565b600c546201000090046001600160a01b0316331461134f5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b611364620f4240670de0b6b3a7640000615b93565b8110156113a15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6113b4600a670de0b6b3a7640000615b93565b8111156113f15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087614500565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613f9d565b600c54600090610100900460ff16156115265760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661155e5760405162461bcd60e51b815260040161092f90615b3c565b61156784613d06565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461159c9392919088613f9d565b9150828210156115be5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b03851660009081526010602052604090206003908101546115f2916109ad90670de0b6b3a7640000615b93565b8211156116115760405162461bcd60e51b815260040161092f90615bbf565b61161f816003015483613f0a565b600382015560006116308582613d61565b604080518581524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051858152600080516020615e0d8339815191529060200160405180910390a16116913386613f67565b61169e610add8683613f0a565b6002546116b4906001600160a01b031682613f7a565b6116bf863385613f84565b6003546000906001600160a01b03888116911614156116ea57506004546001600160a01b03166116f8565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117309291169085908b90600401615c39565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190615c5d565b15610d5057600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546117ad939291908c613f9d565b90506117bd826003015482613f0a565b60038301556117cd886000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c5461182a906201000090046001600160a01b031689613f67565b611837610add8986613f0a565b60025461184d906001600160a01b031685613f7a565b600c5461186b9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b50505050600080516020615ded83398151915288604051610d4591815260200190565b600c54610100900460ff16156119295760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166119615760405162461bcd60e51b815260040161092f90615b3c565b600061196c60095490565b9050600061197a8583614584565b9050806119995760405162461bcd60e51b815260040161092f90615bea565b60005b600f54811015611ae1576000600f82815481106119bb576119bb615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906119f08583613d61565b905080611a0f5760405162461bcd60e51b815260040161092f90615bea565b878785818110611a2157611a21615cfb565b90506020020135811115611a475760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b038316600090815260106020526040902060030154611a6d908261469c565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e2d83398151915290611ab89085904290918252602082015260400190565b60405180910390a3611acb8333836146ee565b5050508080611ad990615d11565b91505061199c565b50611aeb85614703565b611af53386613f7a565b604051858152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611b535760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16611b8b5760405162461bcd60e51b815260040161092f90615b3c565b611b9484613d06565b6001600160a01b038416600090815260106020526040902060030154611bc7906109b86002670de0b6b3a7640000615b93565b831115611be65760405162461bcd60e51b815260040161092f90615d2c565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611c1b9392919088614500565b915082821015611c3d5760405162461bcd60e51b815260040161092f90615cd4565b611c4b81600301548561469c565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051828152600080516020615e0d8339815191529060200160405180910390a1611cad82614703565b611cb73383613f7a565b611cc28533866146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611cfc93909290918961470c565b6003549091506001600160a01b0389811691161415611d28576004546001600160a01b03169150611d37565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611d6f9291169086908690600401615c39565b602060405180830381865afa158015611d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db09190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611ded9291169086908690600401615c39565b600060405180830381600087803b158015611e0757600080fd5b505af1158015611e1b573d6000803e3d6000fd5b50505050611e2d83600301548261469c565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e2d833981519152910160405180910390a3604051858152600080516020615ded8339815191529060200160405180910390a1611e9985614703565b600c54611eb5906201000090046001600160a01b031686613f7a565b600c54611ed39083906201000090046001600160a01b0316836146ee565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611f3e573360009081526008602090815260408083206001600160a01b0388168452909152812055611f6d565b611f488184613f0a565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e4d833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff1615611fea5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166120225760405162461bcd60e51b815260040161092f90615b3c565b61202b84613d06565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154612060939291908861470c565b91508161207f5760405162461bcd60e51b815260040161092f90615bea565b8282111561209f5760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b0385166000908152601060205260409020600301546120d2906109b86002670de0b6b3a7640000615b93565b8211156120f15760405162461bcd60e51b815260040161092f90615d2c565b6120ff81600301548361469c565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051848152600080516020615e0d8339815191529060200160405180910390a161216184614703565b61216b3385613f7a565b6121768533846146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546121ad939291908a61470c565b6003549091506000906001600160a01b03898116911614156121db57506004546001600160a01b03166121e9565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122219291169085908790600401615c39565b602060405180830381865afa15801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261229f9291169085908790600401615c39565b600060405180830381600087803b1580156122b957600080fd5b505af11580156122cd573d6000803e3d6000fd5b505050506122df83600301548361469c565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e2d833981519152910160405180910390a361232a87614703565b600c54612346906201000090046001600160a01b031688613f7a565b600c546123649082906201000090046001600160a01b0316846146ee565b604051878152600080516020615ded8339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee90602401602060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190615d56565b905090565b600d546001600160a01b031633146124675760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b604482015260640161092f565b6001600160a01b0381166124bd5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f722061646472657373000000604482015260640161092f565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b89101611428565b610eef620f4240670de0b6b3a7640000615b93565b6000612531612a9d565b905060005b81518110156126b55760006006600084848151811061255757612557615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006006600085858151811061259a5761259a615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612612600d60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b60200260200101516001600160a01b03166147a69092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061265c5761265c615cfb565b60200260200101518460405161269a94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126ad81615d11565b915050612536565b5050565b610eef64e8d4a51000670de0b6b3a7640000615b93565b600c54600090610100900460ff16156126fb5760405162461bcd60e51b815260040161092f90615b17565b5060115490565b610eef670de0b6b3a76400006064615cb5565b600c54600090610100900460ff16156127405760405162461bcd60e51b815260040161092f90615b17565b61274982613d06565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d7490615c7a565b61278e6003670de0b6b3a7640000615b93565b610eef906001615ba7565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613e46565b600061280633848461433c565b50600192915050565b600c54610100900460ff16156128375760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661286f5760405162461bcd60e51b815260040161092f90615b3c565b600061287a60095490565b90506000612889856000613d61565b905060006128978683613f0a565b905060006128a58285614584565b9050806128c45760405162461bcd60e51b815260040161092f90615bea565b6128ce3388613f67565b6002546128e4906001600160a01b031684613f7a565b6128ed82613f71565b60005b600f54811015612a35576000600f828154811061290f5761290f615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906129448583613d61565b9050806129635760405162461bcd60e51b815260040161092f90615bea565b89898581811061297557612975615cfb565b9050602002013581101561299b5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b0383166000908152601060205260409020600301546129c19082613f0a565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615dcd83398151915290612a0c9085904290918252602082015260400190565b60405180910390a3612a1f833383613f84565b5050508080612a2d90615d11565b9150506128f0565b50604051878152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610eef600a670de0b6b3a7640000615b93565b6001612a93670de0b6b3a76400006002615cb5565b610eef9190615d6f565b600c54606090610100900460ff1615612ac85760405162461bcd60e51b815260040161092f90615b17565b600e54600160a01b900460ff16612af15760405162461bcd60e51b815260040161092f90615b3c565b600f805480602002602001604051908101604052809291908181526020018280548015610ded57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b29575050505050905090565b601254600090600160a01b900460ff1615612bad5760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a4544000000000000000000604482015260640161092f565b6001600160a01b038916612c035760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f414444524553530000604482015260640161092f565b6001600160a01b038816612c595760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f414444524553530000000000604482015260640161092f565b612c6e620f4240670de0b6b3a7640000615b93565b87876000818110612c8157612c81615cfb565b905060200201351015612cc45760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b612cd7600a670de0b6b3a7640000615b93565b87876000818110612cea57612cea615cfb565b905060200201351115612d2d5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b612db38989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a906002908390839080828437600092019190915250614809915050565b9998505050505050505050565b600c546000908190610100900460ff1615612ded5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16612e255760405162461bcd60e51b815260040161092f90615b3c565b612e448460005b602002016020810190612e3f9190615863565b613d06565b612e4f846001612e2c565b6000601081612e616020880188615863565b6001600160a01b03168152602081019190915260400160009081209150601081876001602002016020810190612e979190615863565b6001600160a01b03166001600160a01b031681526020019081526020016000209050612ed682600301546002670de0b6b3a76400006109b89190615b93565b85351115612ef65760405162461bcd60e51b815260040161092f90615d2c565b6000612f2c83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b6020020135614067565b90506040860135811115612f785760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b6040805160808101825260038581015482526002808701546020808501919091529186015493830193909352918401546060820152600091612fcf9082908a3590612fc5908d018d615863565b60608c0135614947565b90975091506020880135871015612ff85760405162461bcd60e51b815260040161092f90615cd4565b61300685600301548361469c565b856003018190555061301c846003015488613f0a565b846003018190555061304e85600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156130705760405162461bcd60e51b815260040161092f90615bea565b60408801358611156130b65760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6130c1883588614584565b8311156130e05760405162461bcd60e51b815260040161092f90615bea565b6130f060408a0160208b01615863565b6001600160a01b031661310660208b018b615863565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461316e61316660208b018b615863565b338a356146ee565b60006131988935613193816109b8670de0b6b3a76400008e60035b6020020135613f0a565b613f0a565b9050606089013515613233576131dc8a60025b6020020160208101906131be9190615863565b826131cc60208e018e615863565b6001600160a01b031691906147a6565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61320d60608c0160408d01615863565b61321a60208d018d615863565b8360405161322a93929190615c39565b60405180910390a15b61324d61324660408c0160208d01615863565b338a613f84565b505050505050600c805461ff001916905590939092509050565b6060806000613274612a9d565b90506000815167ffffffffffffffff81111561329257613292615d86565b6040519080825280602002602001820160405280156132bb578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156132da576132da615d86565b604051908082528060200260200182016040528015613303578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061332457613324615cfb565b602002602001015183828151811061333e5761333e615cfb565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061337457613374615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106133af576133af615cfb565b6020908102919091010152806133c481615d11565b915050613309565b509094909350915050565b60608060006133e4612a9d565b90506000815167ffffffffffffffff81111561340257613402615d86565b60405190808252806020026020018201604052801561342b578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561344a5761344a615d86565b604051908082528060200260200182016040528015613473578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061349457613494615cfb565b60200260200101518382815181106134ae576134ae615cfb565b60200260200101906001600160a01b031690816001600160a01b031681525050600560008583815181106134e4576134e4615cfb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061351f5761351f615cfb565b60209081029190910101528061353481615d11565b915050613479565b600c546000908190610100900460ff16156135695760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166135a15760405162461bcd60e51b815260040161092f90615b3c565b6135ac846000612e2c565b6135b7846001612e2c565b60006010816135c96020880188615863565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906135ff9190615863565b6001600160a01b03166001600160a01b03168152602001908152602001600020905061363e81600301546003670de0b6b3a76400006109ad9190615b93565b602086013511156136615760405162461bcd60e51b815260040161092f90615bbf565b600061368d83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b905060408601358111156136d95760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916137329082908a81013590613728908d018d615863565b60608c0135614b5f565b909750915087358711156137585760405162461bcd60e51b815260040161092f90615c13565b61376685600301548361469c565b60038087019190915584015461377e90896001613189565b84600301819055506137b085600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156137d25760405162461bcd60e51b815260040161092f90615bea565b60408801358611156138185760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6138268760208a0135614584565b8311156138455760405162461bcd60e51b815260040161092f90615bea565b61385560408a0160208b01615863565b6001600160a01b031661386b60208b018b615863565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a46138d66138cf60208b018b615863565b33896146ee565b60006138f488613193816109b8670de0b6b3a76400008e6003613189565b90506060890135156139625761390b8a60026131ab565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61393c60608c0160408d01615863565b61394960208d018d615863565b8360405161395993929190615c39565b60405180910390a15b61324d61397560408c0160208d01615863565b3360208c0135613f84565b600061398b85613d06565b61399484613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef9391908989614d83565b600c54606090610100900460ff1615612af15760405162461bcd60e51b815260040161092f90615b17565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613a2f908361469c565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e4d8339815191529101610eca565b610eef6002670de0b6b3a7640000615b93565b600c54600090610100900460ff1615613ab25760405162461bcd60e51b815260040161092f90615b17565b613abb82613d06565b6001600160a01b038216600090815260106020526040902060020154601154610e7a908290614584565b6000613aef612a9d565b905060005b81518110156126b557600060056000848481518110613b1557613b15615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613b5857613b58615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550613bb0600e60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b7fe8e83bbe0f2a413d8e79dcb9ef4143cd967143e9d6b93c91d002c7eefdc507cc33600e60009054906101000a90046001600160a01b0316858581518110613bfa57613bfa615cfb565b602002602001015184604051613c3894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080613c4b81615d11565b915050613af4565b600c54600090610100900460ff1615613c7e5760405162461bcd60e51b815260040161092f90615b17565b613c8782613d06565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546114939391908761470c565b6001600160a01b03811660009081526010602052604090205460ff16613d5e5760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b604482015260640161092f565b50565b600080613d6e8385615cb5565b9050831580613d85575082613d838583615b93565b145b613dc45760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613dd96002670de0b6b3a7640000615b93565b613de39083615ba7565b905081811015613e285760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613e3c670de0b6b3a764000083615b93565b9695505050505050565b600080613e538685614584565b90506000613e69670de0b6b3a764000083613f0a565b90506000613e7982600154613d61565b90506000613e9886613e93670de0b6b3a764000085613f0a565b614584565b90506000613ea68b83613f0a565b90506000613eb4828d614584565b90506000613ec28288614e37565b90506000613ed0828d613d61565b90506000613ede8d83613f0a565b9050613ef781613e93670de0b6b3a76400006000613f0a565b9f9e505050505050505050505050505050565b6000806000613f198585614f58565b915091508015613f5f5760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015260640161092f565b509392505050565b6126b58282614f8f565b613d5e81614f9a565b6126b58282615066565b613f986001600160a01b03841683836147a6565b505050565b600080613faa8685614584565b90506000613fc5846109b8670de0b6b3a76400006000613f0a565b90506000613fd38783613f0a565b90506000613fe18289614584565b9050600061400082613ffb670de0b6b3a764000088614584565b614e37565b9050600061400e828d613d61565b9050600061401c8d83613f0a565b9050600061403d614035670de0b6b3a76400008a613f0a565b600154613d61565b9050614055826109b8670de0b6b3a764000084613f0a565b9e9d5050505050505050505050505050565b6000806140748787614584565b905060006140828686614584565b905060006140908383614584565b905060006140d9670de0b6b3a7640000613e93670de0b6b3a7640000896000546140b861239b565b6001546140c59190615ba7565b6140cf9190615ba7565b6131939190615ba7565b90506140e58282613d61565b9a9950505050505050505050565b600c546201000090046001600160a01b031633146141485760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b6001600160a01b03831660009081526010602052604090205460ff16156141a05760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b604482015260640161092f565b600e54600160a01b900460ff16156141ed5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600f546002116142305760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015260640161092f565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613f98838383615071565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561431e614319670de0b6b3a76400006064615cb5565b614703565b61433a33614335670de0b6b3a76400006064615cb5565b613f7a565b565b6001600160a01b03831660009081526007602052604090205481111561439b5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b6001600160a01b0383166000908152600760205260409020546143be9082613f0a565b6001600160a01b0380851660009081526007602052604080822093909355908416815220546143ed908261469c565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144419085815260200190565b60405180910390a3505050565b60008061445b8786614584565b9050600080548461446a61239b565b6001546144779190615ba7565b6144819190615ba7565b61448b9190615ba7565b905060006144a1670de0b6b3a764000083613f0a565b90506144ad8682613d61565b905060006144bf8b613e938d8561469c565b905060006144cd8286614e37565b905060006144e3670de0b6b3a764000083613f0a565b90506144ef8b82613d61565b9d9c50505050505050505050505050565b60008061450d8685614584565b90506000614526614035670de0b6b3a764000084613f0a565b90506000614540856109b8670de0b6b3a764000085613f0a565b9050600061454e8a8361469c565b9050600061455c828c614584565b9050600061456a8287614e37565b90506000614578828c613d61565b90506144ef818c613f0a565b6000816145c25760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015260640161092f565b60006145d6670de0b6b3a764000085615cb5565b90508315806145f55750670de0b6b3a76400006145f38583615b93565b145b6146345760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000614641600285615b93565b61464b9083615ba7565b9050818110156146905760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000613e3c8583615b93565b6000806146a98385615ba7565b905083811015610e7a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015260640161092f565b613f986001600160a01b0384168330846152c1565b613d5e816152e8565b6000806147198685614584565b90506000614727868561469c565b905060006147358288614584565b9050600061474b670de0b6b3a764000085614584565b905060006147598383614e37565b90506000614767828d613d61565b90506000614775828e613f0a565b9050600061478e614035670de0b6b3a76400008a613f0a565b905061405582613e93670de0b6b3a764000084613f0a565b6040516001600160a01b038316602482015260448101829052613f9890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152615357565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061485f5761485f615cfb565b60200260200101516001819055508560018151811061488057614880615cfb565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061496487600160200201518860035b6020020151614584565b9050600061498487613193896109b8670de0b6b3a764000061319361239b565b6001600160a01b0387166000908152600560205260409020549091506149aa908261469c565b60056000886001600160a01b03166001600160a01b031681526020019081526020016000208190555060006149f1886131938a6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038816600090815260066020526040902054909150614a17908261469c565b6001600160a01b03881660009081526006602052604081209190915580548790614a3f61239b565b600154614a4c9190615ba7565b614a569190615ba7565b614a609190615ba7565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614a9f8a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614ae0670de0b6b3a764000083613f0a565b9050614aec8a82613d61565b8b51909150600090614b0290613e93818561469c565b90506000614b108288614e37565b90506000614b26670de0b6b3a764000083613f0a565b9050614b398e6002602002015182613d61565b995089614b4a8e613193898b615ba7565b99509950505050505050505094509492505050565b60008080614b76876003602002015188600161495a565b90506000614b8b886002602002015188613f0a565b90506000614ba0896002602002015183614584565b90506000614bae8285614e37565b9050614bc281670de0b6b3a7640000613f0a565b90506000805488614bd161239b565b600154614bde9190615ba7565b614be89190615ba7565b614bf29190615ba7565b8b51909150614c1790614c059084613d61565b613e93670de0b6b3a764000084613f0a565b96506000614c37886131938a6109b8670de0b6b3a764000061319361239b565b6001600160a01b038b16600090815260056020526040902054909150614c5d908261469c565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614ca4896131938b6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038c16600090815260066020526040902054909150614cca908261469c565b6001600160a01b038c166000908152600660205260409020558c51614d0790614cf39086613d61565b613e93670de0b6b3a7640000600154613f0a565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d468a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614d908588614584565b90506000614d9e8786613f0a565b90506000614dac8883614584565b90506000614dba8285614e37565b9050614dce81670de0b6b3a7640000613f0a565b90506000805487614ddd61239b565b600154614dea9190615ba7565b614df49190615ba7565b614dfe9190615ba7565b9050614e12670de0b6b3a764000082613f0a565b9550614e27614e218d84613d61565b87614584565b9c9b505050505050505050505050565b60006001831015614e825760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b604482015260640161092f565b6001614e97670de0b6b3a76400006002615cb5565b614ea19190615d6f565b831115614ee95760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b604482015260640161092f565b6000614ef483615429565b90506000614f028483613f0a565b90506000614f1886614f1385615447565b61545b565b905081614f29579250610ed6915050565b6000614f4c8784614f476402540be400670de0b6b3a7640000615b93565b6154cf565b90506112ef8282613d61565b600080828410614f7757614f6c8385615d6f565b600091509150614f88565b614f818484615d6f565b6001915091505b9250929050565b6126b582308361433c565b30600090815260076020526040902054811115614ff05760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b3060009081526007602052604090205461500a9082613f0a565b306000908152600760205260409020556009546150279082613f0a565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126b530838361433c565b670de0b6b3a76400008110156150ba5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b604482015260640161092f565b6150cd670de0b6b3a76400006032615cb5565b81111561510d5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b604482015260640161092f565b61512464e8d4a51000670de0b6b3a7640000615b93565b8210156151655760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b604482015260640161092f565b6001600160a01b038316600090815260106020526040902060020154808211156152015761519e6011546151998484613f0a565b61469c565b6011556151b4670de0b6b3a76400006032615cb5565b60115411156151fc5760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b604482015260640161092f565b61521d565b8082101561521d576152196011546131938385613f0a565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561526657615261853361525c8785613f0a565b6146ee565b6152ba565b808410156152ba57600061527a8286613f0a565b90506000615289826000613d61565b905061529f873361529a8585613f0a565b613f84565b6002546152b79088906001600160a01b031683613f84565b50505b5050505050565b6152e2846323b872dd60e01b8585856040516024016147d293929190615c39565b50505050565b30600090815260076020526040902054615302908261469c565b3060009081526007602052604090205560095461531f908261469c565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161505b565b60006153ac826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155bf9092919063ffffffff16565b805190915015613f9857808060200190518101906153ca9190615c5d565b613f985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161092f565b6000670de0b6b3a764000061543d83615447565b610ed69190615cb5565b6000610ed6670de0b6b3a764000083615b93565b6000828161546a600285615d9c565b61547c57670de0b6b3a764000061547e565b815b905061548b600285615b93565b93505b83156114935761549e8283613d61565b91506154ab600285615d9c565b156154bd576154ba8183613d61565b90505b6154c8600285615b93565b935061548e565b60008281806154e687670de0b6b3a7640000614f58565b9092509050670de0b6b3a764000080600060015b8884106155b0576000615515670de0b6b3a764000083615cb5565b90506000806155358a61553085670de0b6b3a7640000613f0a565b614f58565b91509150615547876109b8848c613d61565b96506155538784614584565b965086615562575050506155b0565b871561556c579315935b8015615576579315935b841561558d576155868688613f0a565b955061559a565b615597868861469c565b95505b50505080806155a890615d11565b9150506154fa565b50909998505050505050505050565b6060611493848460008585843b6156185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161092f565b600080866001600160a01b031685876040516156349190615db0565b60006040518083038185875af1925050503d8060008114615671576040519150601f19603f3d011682016040523d82523d6000602084013e615676565b606091505b50915091506112ef82828660608315615690575081610e7a565b8251156156a05782518084602001fd5b8160405162461bcd60e51b815260040161092f9190615730565b80356001600160a01b038116811461276757600080fd5b6000806000606084860312156156e657600080fd5b6156ef846156ba565b95602085013595506040909401359392505050565b60005b8381101561571f578181015183820152602001615707565b838111156152e25750506000910152565b602081526000825180602084015261574f816040850160208701615704565b601f01601f19169190910160400192915050565b60008060006060848603121561577857600080fd5b615781846156ba565b925061578f602085016156ba565b9150604084013590509250925092565b600080604083850312156157b257600080fd5b6157bb836156ba565b946020939093013593505050565b60008060008060008060c087890312156157e257600080fd5b6157eb876156ba565b95506020870135945060408701359350615807606088016156ba565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561583757600080fd5b615840856156ba565b935061584e602086016156ba565b93969395505050506040820135916060013590565b60006020828403121561587557600080fd5b610e7a826156ba565b60006020828403121561589057600080fd5b5035919050565b60008083601f8401126158a957600080fd5b50813567ffffffffffffffff8111156158c157600080fd5b6020830191508360208260051b8501011115614f8857600080fd5b6000806000604084860312156158f157600080fd5b83359250602084013567ffffffffffffffff81111561590f57600080fd5b61591b86828701615897565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159615781516001600160a01b03168752958201959082019060010161593c565b509495945050505050565b602081526000610e7a6020830184615928565b8015158114613d5e57600080fd5b8060408101831015610ed657600080fd5b600080600080600080600080610120898b0312156159bb57600080fd5b6159c4896156ba565b97506159d260208a016156ba565b9650604089013567ffffffffffffffff8111156159ee57600080fd5b6159fa8b828c01615897565b9097509550506060890135615a0e8161597f565b93506080890135615a1e8161597f565b9250615a2d8a60a08b0161598d565b9150615a3c8a60e08b0161598d565b90509295985092959890939650565b60008060e08385031215615a5e57600080fd5b6060830184811115615a6f57600080fd5b8392508460e085011115615a8257600080fd5b809150509250929050565b604081526000615aa06040830185615928565b82810360208481019190915284518083528582019282019060005b81811015615ad757845183529383019391830191600101615abb565b5090979650505050505050565b60008060408385031215615af757600080fd5b615b00836156ba565b9150615b0e602084016156ba565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615ba257615ba2615b67565b500490565b60008219821115615bba57615bba615b7d565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c6f57600080fd5b8151610e7a8161597f565b600181811c90821680615c8e57607f821691505b60208210811415615caf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ccf57615ccf615b7d565b500290565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d2557615d25615b7d565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600060208284031215615d6857600080fd5b5051919050565b600082821015615d8157615d81615b7d565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dab57615dab615b67565b500690565b60008251615dc2818460208701615704565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212208103388c618582ea02a780903f97834bf1e06bbf7a424c36c2b0bc50970b992e64736f6c634300080a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104285760003560e01c80638d4e40831161022b578063c44a428311610130578063dd62ed3e116100b8578063f1b8a9b711610087578063f1b8a9b7146108b1578063f68045a5146108c4578063f8b2cb4f146108cc578063fde924f7146108df578063ff9b1850146108f157600080fd5b8063dd62ed3e1461085d578063e4a28a52146104c3578063ec09302114610896578063f0f13f0b1461089e57600080fd5b8063caa01148116100ff578063caa011481461081f578063cc77828d14610832578063cd2ed8fb1461083a578063d4cadf6814610842578063d73dd6231461084a57600080fd5b8063c44a4283146107e6578063c6580d12146107fc578063c8ff183314610804578063c98a59cf1461080c57600080fd5b8063b0e0d136116101b3578063bc694ea211610182578063bc694ea21461078e578063be3bbd2e14610796578063c070a6d8146107ab578063c36596a6146104f0578063c421a3fc146107be57600080fd5b8063b0e0d13614610776578063b7b800a414610776578063ba019dab1461077e578063bc063e1a1461078657600080fd5b806395d89b41116101fa57806395d89b411461072d578063992e2a9214610735578063a3b3a16d1461073d578063a9059cbb14610750578063b02f0b731461076357600080fd5b80638d4e4083146106f8578063936c34771461070a5780639381cd2b14610712578063948d8ce61461071a57600080fd5b80633950b3fd116103315780636d06dfa0116102b957806376c7a3c71161028857806376c7a3c7146106b75780637a284be4146106bf5780637c5918b3146106c857806380ca7308146106e8578063867378c5146106f057600080fd5b80636d06dfa014610660578063700dd7e814610673578063703305181461067b57806370a082311461068e57600080fd5b80634f69c0d4116103005780634f69c0d41461060c5780635db342771461061f5780635e123add14610632578063638c9e951461063a578063661884631461064d57600080fd5b80633950b3fd146105c2578063430ed5d0146105d557806346ab38f1146105e85780634df947d0146105fb57600080fd5b8063218b5382116103b4578063300621921161038357806330062192146105515780633018205f14610571578063313ce5671461058857806334e199071461059d578063392e53cd146105b057600080fd5b8063218b5382146104f057806323b872dd146104ff5780632eebd6ae146105125780632f37b6241461052557600080fd5b8063095ea7b3116103fb578063095ea7b3146104a057806309a3bbe4146104c357806309ef3f5b146104cb57806318160ddd146104e0578063189d00ca146104e857600080fd5b806302c967481461042d57806304ad79541461045357806306fdde0314610478578063079492d41461048d575b600080fd5b61044061043b3660046156d1565b610904565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b03909116815260200161044a565b610480610d65565b60405161044a9190615730565b61044061049b366004615763565b610df7565b6104b36104ae36600461579f565b610e81565b604051901515815260200161044a565b610440610edc565b6104de6104d93660046157c9565b610ef2565b005b600954610440565b61044061112e565b610440670de0b6b3a764000081565b6104b361050d366004615763565b611145565b610440610520366004615821565b611299565b6104b3610533366004615863565b6001600160a01b031660009081526010602052604090205460ff1690565b61044061055f366004615863565b60056020526000908152604090205481565b600c546201000090046001600160a01b0316610460565b600c5460405160ff909116815260200161044a565b6104de6105ab36600461587e565b6112fa565b601254600160a01b900460ff166104b3565b6104406105d036600461579f565b611433565b6104406105e336600461579f565b61149b565b6104406105f63660046156d1565b6114fb565b6004546001600160a01b0316610460565b6104de61061a3660046158dc565b611901565b61044061062d3660046156d1565b611b28565b600054610440565b600d54610460906001600160a01b031681565b6104b361065b36600461579f565b611ee9565b61044061066e3660046156d1565b611fbf565b61044061239b565b6104de610689366004615863565b612415565b61044061069c366004615863565b6001600160a01b031660009081526007602052604090205490565b610440612512565b61044060005481565b6104406106d6366004615863565b60066020526000908152604090205481565b6104de612527565b6104406126b9565b600e54600160a01b900460ff166104b3565b6104406126d0565b610440612702565b610440610728366004615863565b612715565b61048061276c565b61044061277b565b61044061074b36600461579f565b612799565b6104b361075e36600461579f565b6127f9565b6104de6107713660046158dc565b61280f565b610440600281565b610440600181565b610440612a6b565b610440612a7e565b61079e612a9d565b60405161044a919061596c565b6104b36107b936600461599e565b612b50565b6107d16107cc366004615a4b565b612dc0565b6040805192835260208301919091520161044a565b6107ee613267565b60405161044a929190615a8d565b610440600081565b6107ee6133d7565b6107d161081a366004615a4b565b61353c565b61044061082d366004615821565b613980565b61079e6139d6565b600f54610440565b600154610440565b6104b361085836600461579f565b613a01565b61044061086b366004615ae4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610440613a74565b600e54610460906001600160a01b031681565b6104406108bf366004615863565b613a87565b6104de613ae5565b6104406108da366004615863565b613c53565b600c54600160b01b900460ff166104b3565b6104406108ff36600461579f565b613ca6565b600c54600090610100900460ff16156109385760405162461bcd60e51b815260040161092f90615b17565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109705760405162461bcd60e51b815260040161092f90615b3c565b61097984613d06565b6001600160a01b03841660009081526010602052604090206003908101546109bd916109ad90670de0b6b3a7640000615b93565b6109b8906001615ba7565b613d61565b8311156109dc5760405162461bcd60e51b815260040161092f90615bbf565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a119392919088613e46565b915081610a305760405162461bcd60e51b815260040161092f90615bea565b82821115610a505760405162461bcd60e51b815260040161092f90615c13565b610a5e816003015485613f0a565b60038201556000610a6f8382613d61565b604080518781524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051838152600080516020615e0d8339815191529060200160405180910390a1610ad03384613f67565b610ae2610add8483613f0a565b613f71565b600254610af8906001600160a01b031682613f7a565b610b03863387613f84565b6003546000906001600160a01b0388811691161415610b2e57506004546001600160a01b0316610b3c565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b749291169085908990600401615c39565b602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190615c5d565b15610d5057600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610bf1939291908a613f9d565b9050610c01826003015482613f0a565b6003830155610c11866000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c54610c6e906201000090046001600160a01b031687613f67565b610c7b610add8786613f0a565b600254610c91906001600160a01b031685613f7a565b600c54610caf9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b50505050600080516020615ded83398151915286604051610d4591815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d7490615c7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da090615c7a565b8015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e225760405162461bcd60e51b815260040161092f90615b17565b610e2b84613d06565b610e3483613d06565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e7593919088614067565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e4d83398151915290610eca9086815260200190565b60405180910390a35060015b92915050565b610eef670de0b6b3a76400006032615cb5565b81565b600c54610100900460ff1615610f1a5760405162461bcd60e51b815260040161092f90615b17565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f835760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b604482015260640161092f565b6003546001600160a01b03878116911614610fe05760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f41444452455353000000604482015260640161092f565b6004546001600160a01b0384811691161461103d5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f41444452455353000000604482015260640161092f565b6110488686866140f3565b604080518681524260208201526001600160a01b038816913391600080516020615e2d833981519152910160405180910390a36110868383836140f3565b604080518381524260208201526001600160a01b038516913391600080516020615e2d833981519152910160405180910390a36110c16142dd565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610eef6402540be400670de0b6b3a7640000615b93565b6000336001600160a01b038516148061118157506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111c55760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b604482015260640161092f565b6111d084848461433c565b336001600160a01b0385161480159061120e57506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b1561128f576001600160a01b03841660009081526008602090815260408083203384529091529020546112419083613f0a565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e4d833981519152910160405180910390a35b5060019392505050565b60006112a485613d06565b6112ad84613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef939190898961444e565b979650505050505050565b600c546201000090046001600160a01b0316331461134f5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b611364620f4240670de0b6b3a7640000615b93565b8110156113a15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6113b4600a670de0b6b3a7640000615b93565b8111156113f15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087614500565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613f9d565b600c54600090610100900460ff16156115265760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661155e5760405162461bcd60e51b815260040161092f90615b3c565b61156784613d06565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461159c9392919088613f9d565b9150828210156115be5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b03851660009081526010602052604090206003908101546115f2916109ad90670de0b6b3a7640000615b93565b8211156116115760405162461bcd60e51b815260040161092f90615bbf565b61161f816003015483613f0a565b600382015560006116308582613d61565b604080518581524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051858152600080516020615e0d8339815191529060200160405180910390a16116913386613f67565b61169e610add8683613f0a565b6002546116b4906001600160a01b031682613f7a565b6116bf863385613f84565b6003546000906001600160a01b03888116911614156116ea57506004546001600160a01b03166116f8565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117309291169085908b90600401615c39565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190615c5d565b15610d5057600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546117ad939291908c613f9d565b90506117bd826003015482613f0a565b60038301556117cd886000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c5461182a906201000090046001600160a01b031689613f67565b611837610add8986613f0a565b60025461184d906001600160a01b031685613f7a565b600c5461186b9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b50505050600080516020615ded83398151915288604051610d4591815260200190565b600c54610100900460ff16156119295760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166119615760405162461bcd60e51b815260040161092f90615b3c565b600061196c60095490565b9050600061197a8583614584565b9050806119995760405162461bcd60e51b815260040161092f90615bea565b60005b600f54811015611ae1576000600f82815481106119bb576119bb615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906119f08583613d61565b905080611a0f5760405162461bcd60e51b815260040161092f90615bea565b878785818110611a2157611a21615cfb565b90506020020135811115611a475760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b038316600090815260106020526040902060030154611a6d908261469c565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e2d83398151915290611ab89085904290918252602082015260400190565b60405180910390a3611acb8333836146ee565b5050508080611ad990615d11565b91505061199c565b50611aeb85614703565b611af53386613f7a565b604051858152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611b535760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16611b8b5760405162461bcd60e51b815260040161092f90615b3c565b611b9484613d06565b6001600160a01b038416600090815260106020526040902060030154611bc7906109b86002670de0b6b3a7640000615b93565b831115611be65760405162461bcd60e51b815260040161092f90615d2c565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611c1b9392919088614500565b915082821015611c3d5760405162461bcd60e51b815260040161092f90615cd4565b611c4b81600301548561469c565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051828152600080516020615e0d8339815191529060200160405180910390a1611cad82614703565b611cb73383613f7a565b611cc28533866146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611cfc93909290918961470c565b6003549091506001600160a01b0389811691161415611d28576004546001600160a01b03169150611d37565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611d6f9291169086908690600401615c39565b602060405180830381865afa158015611d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db09190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611ded9291169086908690600401615c39565b600060405180830381600087803b158015611e0757600080fd5b505af1158015611e1b573d6000803e3d6000fd5b50505050611e2d83600301548261469c565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e2d833981519152910160405180910390a3604051858152600080516020615ded8339815191529060200160405180910390a1611e9985614703565b600c54611eb5906201000090046001600160a01b031686613f7a565b600c54611ed39083906201000090046001600160a01b0316836146ee565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611f3e573360009081526008602090815260408083206001600160a01b0388168452909152812055611f6d565b611f488184613f0a565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e4d833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff1615611fea5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166120225760405162461bcd60e51b815260040161092f90615b3c565b61202b84613d06565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154612060939291908861470c565b91508161207f5760405162461bcd60e51b815260040161092f90615bea565b8282111561209f5760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b0385166000908152601060205260409020600301546120d2906109b86002670de0b6b3a7640000615b93565b8211156120f15760405162461bcd60e51b815260040161092f90615d2c565b6120ff81600301548361469c565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051848152600080516020615e0d8339815191529060200160405180910390a161216184614703565b61216b3385613f7a565b6121768533846146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546121ad939291908a61470c565b6003549091506000906001600160a01b03898116911614156121db57506004546001600160a01b03166121e9565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122219291169085908790600401615c39565b602060405180830381865afa15801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261229f9291169085908790600401615c39565b600060405180830381600087803b1580156122b957600080fd5b505af11580156122cd573d6000803e3d6000fd5b505050506122df83600301548361469c565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e2d833981519152910160405180910390a361232a87614703565b600c54612346906201000090046001600160a01b031688613f7a565b600c546123649082906201000090046001600160a01b0316846146ee565b604051878152600080516020615ded8339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee90602401602060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190615d56565b905090565b600d546001600160a01b031633146124675760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b604482015260640161092f565b6001600160a01b0381166124bd5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f722061646472657373000000604482015260640161092f565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b89101611428565b610eef620f4240670de0b6b3a7640000615b93565b6000612531612a9d565b905060005b81518110156126b55760006006600084848151811061255757612557615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006006600085858151811061259a5761259a615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612612600d60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b60200260200101516001600160a01b03166147a69092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061265c5761265c615cfb565b60200260200101518460405161269a94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126ad81615d11565b915050612536565b5050565b610eef64e8d4a51000670de0b6b3a7640000615b93565b600c54600090610100900460ff16156126fb5760405162461bcd60e51b815260040161092f90615b17565b5060115490565b610eef670de0b6b3a76400006064615cb5565b600c54600090610100900460ff16156127405760405162461bcd60e51b815260040161092f90615b17565b61274982613d06565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d7490615c7a565b61278e6003670de0b6b3a7640000615b93565b610eef906001615ba7565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613e46565b600061280633848461433c565b50600192915050565b600c54610100900460ff16156128375760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661286f5760405162461bcd60e51b815260040161092f90615b3c565b600061287a60095490565b90506000612889856000613d61565b905060006128978683613f0a565b905060006128a58285614584565b9050806128c45760405162461bcd60e51b815260040161092f90615bea565b6128ce3388613f67565b6002546128e4906001600160a01b031684613f7a565b6128ed82613f71565b60005b600f54811015612a35576000600f828154811061290f5761290f615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906129448583613d61565b9050806129635760405162461bcd60e51b815260040161092f90615bea565b89898581811061297557612975615cfb565b9050602002013581101561299b5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b0383166000908152601060205260409020600301546129c19082613f0a565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615dcd83398151915290612a0c9085904290918252602082015260400190565b60405180910390a3612a1f833383613f84565b5050508080612a2d90615d11565b9150506128f0565b50604051878152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610eef600a670de0b6b3a7640000615b93565b6001612a93670de0b6b3a76400006002615cb5565b610eef9190615d6f565b600c54606090610100900460ff1615612ac85760405162461bcd60e51b815260040161092f90615b17565b600e54600160a01b900460ff16612af15760405162461bcd60e51b815260040161092f90615b3c565b600f805480602002602001604051908101604052809291908181526020018280548015610ded57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b29575050505050905090565b601254600090600160a01b900460ff1615612bad5760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a4544000000000000000000604482015260640161092f565b6001600160a01b038916612c035760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f414444524553530000604482015260640161092f565b6001600160a01b038816612c595760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f414444524553530000000000604482015260640161092f565b612c6e620f4240670de0b6b3a7640000615b93565b87876000818110612c8157612c81615cfb565b905060200201351015612cc45760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b612cd7600a670de0b6b3a7640000615b93565b87876000818110612cea57612cea615cfb565b905060200201351115612d2d5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b612db38989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a906002908390839080828437600092019190915250614809915050565b9998505050505050505050565b600c546000908190610100900460ff1615612ded5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16612e255760405162461bcd60e51b815260040161092f90615b3c565b612e448460005b602002016020810190612e3f9190615863565b613d06565b612e4f846001612e2c565b6000601081612e616020880188615863565b6001600160a01b03168152602081019190915260400160009081209150601081876001602002016020810190612e979190615863565b6001600160a01b03166001600160a01b031681526020019081526020016000209050612ed682600301546002670de0b6b3a76400006109b89190615b93565b85351115612ef65760405162461bcd60e51b815260040161092f90615d2c565b6000612f2c83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b6020020135614067565b90506040860135811115612f785760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b6040805160808101825260038581015482526002808701546020808501919091529186015493830193909352918401546060820152600091612fcf9082908a3590612fc5908d018d615863565b60608c0135614947565b90975091506020880135871015612ff85760405162461bcd60e51b815260040161092f90615cd4565b61300685600301548361469c565b856003018190555061301c846003015488613f0a565b846003018190555061304e85600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156130705760405162461bcd60e51b815260040161092f90615bea565b60408801358611156130b65760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6130c1883588614584565b8311156130e05760405162461bcd60e51b815260040161092f90615bea565b6130f060408a0160208b01615863565b6001600160a01b031661310660208b018b615863565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461316e61316660208b018b615863565b338a356146ee565b60006131988935613193816109b8670de0b6b3a76400008e60035b6020020135613f0a565b613f0a565b9050606089013515613233576131dc8a60025b6020020160208101906131be9190615863565b826131cc60208e018e615863565b6001600160a01b031691906147a6565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61320d60608c0160408d01615863565b61321a60208d018d615863565b8360405161322a93929190615c39565b60405180910390a15b61324d61324660408c0160208d01615863565b338a613f84565b505050505050600c805461ff001916905590939092509050565b6060806000613274612a9d565b90506000815167ffffffffffffffff81111561329257613292615d86565b6040519080825280602002602001820160405280156132bb578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156132da576132da615d86565b604051908082528060200260200182016040528015613303578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061332457613324615cfb565b602002602001015183828151811061333e5761333e615cfb565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061337457613374615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106133af576133af615cfb565b6020908102919091010152806133c481615d11565b915050613309565b509094909350915050565b60608060006133e4612a9d565b90506000815167ffffffffffffffff81111561340257613402615d86565b60405190808252806020026020018201604052801561342b578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561344a5761344a615d86565b604051908082528060200260200182016040528015613473578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061349457613494615cfb565b60200260200101518382815181106134ae576134ae615cfb565b60200260200101906001600160a01b031690816001600160a01b031681525050600560008583815181106134e4576134e4615cfb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061351f5761351f615cfb565b60209081029190910101528061353481615d11565b915050613479565b600c546000908190610100900460ff16156135695760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166135a15760405162461bcd60e51b815260040161092f90615b3c565b6135ac846000612e2c565b6135b7846001612e2c565b60006010816135c96020880188615863565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906135ff9190615863565b6001600160a01b03166001600160a01b03168152602001908152602001600020905061363e81600301546003670de0b6b3a76400006109ad9190615b93565b602086013511156136615760405162461bcd60e51b815260040161092f90615bbf565b600061368d83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b905060408601358111156136d95760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916137329082908a81013590613728908d018d615863565b60608c0135614b5f565b909750915087358711156137585760405162461bcd60e51b815260040161092f90615c13565b61376685600301548361469c565b60038087019190915584015461377e90896001613189565b84600301819055506137b085600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156137d25760405162461bcd60e51b815260040161092f90615bea565b60408801358611156138185760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6138268760208a0135614584565b8311156138455760405162461bcd60e51b815260040161092f90615bea565b61385560408a0160208b01615863565b6001600160a01b031661386b60208b018b615863565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a46138d66138cf60208b018b615863565b33896146ee565b60006138f488613193816109b8670de0b6b3a76400008e6003613189565b90506060890135156139625761390b8a60026131ab565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61393c60608c0160408d01615863565b61394960208d018d615863565b8360405161395993929190615c39565b60405180910390a15b61324d61397560408c0160208d01615863565b3360208c0135613f84565b600061398b85613d06565b61399484613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef9391908989614d83565b600c54606090610100900460ff1615612af15760405162461bcd60e51b815260040161092f90615b17565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613a2f908361469c565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e4d8339815191529101610eca565b610eef6002670de0b6b3a7640000615b93565b600c54600090610100900460ff1615613ab25760405162461bcd60e51b815260040161092f90615b17565b613abb82613d06565b6001600160a01b038216600090815260106020526040902060020154601154610e7a908290614584565b6000613aef612a9d565b905060005b81518110156126b557600060056000848481518110613b1557613b15615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613b5857613b58615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550613bb0600e60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b7fe8e83bbe0f2a413d8e79dcb9ef4143cd967143e9d6b93c91d002c7eefdc507cc33600e60009054906101000a90046001600160a01b0316858581518110613bfa57613bfa615cfb565b602002602001015184604051613c3894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080613c4b81615d11565b915050613af4565b600c54600090610100900460ff1615613c7e5760405162461bcd60e51b815260040161092f90615b17565b613c8782613d06565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546114939391908761470c565b6001600160a01b03811660009081526010602052604090205460ff16613d5e5760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b604482015260640161092f565b50565b600080613d6e8385615cb5565b9050831580613d85575082613d838583615b93565b145b613dc45760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613dd96002670de0b6b3a7640000615b93565b613de39083615ba7565b905081811015613e285760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613e3c670de0b6b3a764000083615b93565b9695505050505050565b600080613e538685614584565b90506000613e69670de0b6b3a764000083613f0a565b90506000613e7982600154613d61565b90506000613e9886613e93670de0b6b3a764000085613f0a565b614584565b90506000613ea68b83613f0a565b90506000613eb4828d614584565b90506000613ec28288614e37565b90506000613ed0828d613d61565b90506000613ede8d83613f0a565b9050613ef781613e93670de0b6b3a76400006000613f0a565b9f9e505050505050505050505050505050565b6000806000613f198585614f58565b915091508015613f5f5760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015260640161092f565b509392505050565b6126b58282614f8f565b613d5e81614f9a565b6126b58282615066565b613f986001600160a01b03841683836147a6565b505050565b600080613faa8685614584565b90506000613fc5846109b8670de0b6b3a76400006000613f0a565b90506000613fd38783613f0a565b90506000613fe18289614584565b9050600061400082613ffb670de0b6b3a764000088614584565b614e37565b9050600061400e828d613d61565b9050600061401c8d83613f0a565b9050600061403d614035670de0b6b3a76400008a613f0a565b600154613d61565b9050614055826109b8670de0b6b3a764000084613f0a565b9e9d5050505050505050505050505050565b6000806140748787614584565b905060006140828686614584565b905060006140908383614584565b905060006140d9670de0b6b3a7640000613e93670de0b6b3a7640000896000546140b861239b565b6001546140c59190615ba7565b6140cf9190615ba7565b6131939190615ba7565b90506140e58282613d61565b9a9950505050505050505050565b600c546201000090046001600160a01b031633146141485760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b6001600160a01b03831660009081526010602052604090205460ff16156141a05760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b604482015260640161092f565b600e54600160a01b900460ff16156141ed5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600f546002116142305760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015260640161092f565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613f98838383615071565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561431e614319670de0b6b3a76400006064615cb5565b614703565b61433a33614335670de0b6b3a76400006064615cb5565b613f7a565b565b6001600160a01b03831660009081526007602052604090205481111561439b5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b6001600160a01b0383166000908152600760205260409020546143be9082613f0a565b6001600160a01b0380851660009081526007602052604080822093909355908416815220546143ed908261469c565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144419085815260200190565b60405180910390a3505050565b60008061445b8786614584565b9050600080548461446a61239b565b6001546144779190615ba7565b6144819190615ba7565b61448b9190615ba7565b905060006144a1670de0b6b3a764000083613f0a565b90506144ad8682613d61565b905060006144bf8b613e938d8561469c565b905060006144cd8286614e37565b905060006144e3670de0b6b3a764000083613f0a565b90506144ef8b82613d61565b9d9c50505050505050505050505050565b60008061450d8685614584565b90506000614526614035670de0b6b3a764000084613f0a565b90506000614540856109b8670de0b6b3a764000085613f0a565b9050600061454e8a8361469c565b9050600061455c828c614584565b9050600061456a8287614e37565b90506000614578828c613d61565b90506144ef818c613f0a565b6000816145c25760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015260640161092f565b60006145d6670de0b6b3a764000085615cb5565b90508315806145f55750670de0b6b3a76400006145f38583615b93565b145b6146345760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000614641600285615b93565b61464b9083615ba7565b9050818110156146905760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000613e3c8583615b93565b6000806146a98385615ba7565b905083811015610e7a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015260640161092f565b613f986001600160a01b0384168330846152c1565b613d5e816152e8565b6000806147198685614584565b90506000614727868561469c565b905060006147358288614584565b9050600061474b670de0b6b3a764000085614584565b905060006147598383614e37565b90506000614767828d613d61565b90506000614775828e613f0a565b9050600061478e614035670de0b6b3a76400008a613f0a565b905061405582613e93670de0b6b3a764000084613f0a565b6040516001600160a01b038316602482015260448101829052613f9890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152615357565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061485f5761485f615cfb565b60200260200101516001819055508560018151811061488057614880615cfb565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061496487600160200201518860035b6020020151614584565b9050600061498487613193896109b8670de0b6b3a764000061319361239b565b6001600160a01b0387166000908152600560205260409020549091506149aa908261469c565b60056000886001600160a01b03166001600160a01b031681526020019081526020016000208190555060006149f1886131938a6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038816600090815260066020526040902054909150614a17908261469c565b6001600160a01b03881660009081526006602052604081209190915580548790614a3f61239b565b600154614a4c9190615ba7565b614a569190615ba7565b614a609190615ba7565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614a9f8a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614ae0670de0b6b3a764000083613f0a565b9050614aec8a82613d61565b8b51909150600090614b0290613e93818561469c565b90506000614b108288614e37565b90506000614b26670de0b6b3a764000083613f0a565b9050614b398e6002602002015182613d61565b995089614b4a8e613193898b615ba7565b99509950505050505050505094509492505050565b60008080614b76876003602002015188600161495a565b90506000614b8b886002602002015188613f0a565b90506000614ba0896002602002015183614584565b90506000614bae8285614e37565b9050614bc281670de0b6b3a7640000613f0a565b90506000805488614bd161239b565b600154614bde9190615ba7565b614be89190615ba7565b614bf29190615ba7565b8b51909150614c1790614c059084613d61565b613e93670de0b6b3a764000084613f0a565b96506000614c37886131938a6109b8670de0b6b3a764000061319361239b565b6001600160a01b038b16600090815260056020526040902054909150614c5d908261469c565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614ca4896131938b6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038c16600090815260066020526040902054909150614cca908261469c565b6001600160a01b038c166000908152600660205260409020558c51614d0790614cf39086613d61565b613e93670de0b6b3a7640000600154613f0a565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d468a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614d908588614584565b90506000614d9e8786613f0a565b90506000614dac8883614584565b90506000614dba8285614e37565b9050614dce81670de0b6b3a7640000613f0a565b90506000805487614ddd61239b565b600154614dea9190615ba7565b614df49190615ba7565b614dfe9190615ba7565b9050614e12670de0b6b3a764000082613f0a565b9550614e27614e218d84613d61565b87614584565b9c9b505050505050505050505050565b60006001831015614e825760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b604482015260640161092f565b6001614e97670de0b6b3a76400006002615cb5565b614ea19190615d6f565b831115614ee95760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b604482015260640161092f565b6000614ef483615429565b90506000614f028483613f0a565b90506000614f1886614f1385615447565b61545b565b905081614f29579250610ed6915050565b6000614f4c8784614f476402540be400670de0b6b3a7640000615b93565b6154cf565b90506112ef8282613d61565b600080828410614f7757614f6c8385615d6f565b600091509150614f88565b614f818484615d6f565b6001915091505b9250929050565b6126b582308361433c565b30600090815260076020526040902054811115614ff05760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b3060009081526007602052604090205461500a9082613f0a565b306000908152600760205260409020556009546150279082613f0a565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126b530838361433c565b670de0b6b3a76400008110156150ba5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b604482015260640161092f565b6150cd670de0b6b3a76400006032615cb5565b81111561510d5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b604482015260640161092f565b61512464e8d4a51000670de0b6b3a7640000615b93565b8210156151655760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b604482015260640161092f565b6001600160a01b038316600090815260106020526040902060020154808211156152015761519e6011546151998484613f0a565b61469c565b6011556151b4670de0b6b3a76400006032615cb5565b60115411156151fc5760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b604482015260640161092f565b61521d565b8082101561521d576152196011546131938385613f0a565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561526657615261853361525c8785613f0a565b6146ee565b6152ba565b808410156152ba57600061527a8286613f0a565b90506000615289826000613d61565b905061529f873361529a8585613f0a565b613f84565b6002546152b79088906001600160a01b031683613f84565b50505b5050505050565b6152e2846323b872dd60e01b8585856040516024016147d293929190615c39565b50505050565b30600090815260076020526040902054615302908261469c565b3060009081526007602052604090205560095461531f908261469c565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161505b565b60006153ac826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155bf9092919063ffffffff16565b805190915015613f9857808060200190518101906153ca9190615c5d565b613f985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161092f565b6000670de0b6b3a764000061543d83615447565b610ed69190615cb5565b6000610ed6670de0b6b3a764000083615b93565b6000828161546a600285615d9c565b61547c57670de0b6b3a764000061547e565b815b905061548b600285615b93565b93505b83156114935761549e8283613d61565b91506154ab600285615d9c565b156154bd576154ba8183613d61565b90505b6154c8600285615b93565b935061548e565b60008281806154e687670de0b6b3a7640000614f58565b9092509050670de0b6b3a764000080600060015b8884106155b0576000615515670de0b6b3a764000083615cb5565b90506000806155358a61553085670de0b6b3a7640000613f0a565b614f58565b91509150615547876109b8848c613d61565b96506155538784614584565b965086615562575050506155b0565b871561556c579315935b8015615576579315935b841561558d576155868688613f0a565b955061559a565b615597868861469c565b95505b50505080806155a890615d11565b9150506154fa565b50909998505050505050505050565b6060611493848460008585843b6156185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161092f565b600080866001600160a01b031685876040516156349190615db0565b60006040518083038185875af1925050503d8060008114615671576040519150601f19603f3d011682016040523d82523d6000602084013e615676565b606091505b50915091506112ef82828660608315615690575081610e7a565b8251156156a05782518084602001fd5b8160405162461bcd60e51b815260040161092f9190615730565b80356001600160a01b038116811461276757600080fd5b6000806000606084860312156156e657600080fd5b6156ef846156ba565b95602085013595506040909401359392505050565b60005b8381101561571f578181015183820152602001615707565b838111156152e25750506000910152565b602081526000825180602084015261574f816040850160208701615704565b601f01601f19169190910160400192915050565b60008060006060848603121561577857600080fd5b615781846156ba565b925061578f602085016156ba565b9150604084013590509250925092565b600080604083850312156157b257600080fd5b6157bb836156ba565b946020939093013593505050565b60008060008060008060c087890312156157e257600080fd5b6157eb876156ba565b95506020870135945060408701359350615807606088016156ba565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561583757600080fd5b615840856156ba565b935061584e602086016156ba565b93969395505050506040820135916060013590565b60006020828403121561587557600080fd5b610e7a826156ba565b60006020828403121561589057600080fd5b5035919050565b60008083601f8401126158a957600080fd5b50813567ffffffffffffffff8111156158c157600080fd5b6020830191508360208260051b8501011115614f8857600080fd5b6000806000604084860312156158f157600080fd5b83359250602084013567ffffffffffffffff81111561590f57600080fd5b61591b86828701615897565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159615781516001600160a01b03168752958201959082019060010161593c565b509495945050505050565b602081526000610e7a6020830184615928565b8015158114613d5e57600080fd5b8060408101831015610ed657600080fd5b600080600080600080600080610120898b0312156159bb57600080fd5b6159c4896156ba565b97506159d260208a016156ba565b9650604089013567ffffffffffffffff8111156159ee57600080fd5b6159fa8b828c01615897565b9097509550506060890135615a0e8161597f565b93506080890135615a1e8161597f565b9250615a2d8a60a08b0161598d565b9150615a3c8a60e08b0161598d565b90509295985092959890939650565b60008060e08385031215615a5e57600080fd5b6060830184811115615a6f57600080fd5b8392508460e085011115615a8257600080fd5b809150509250929050565b604081526000615aa06040830185615928565b82810360208481019190915284518083528582019282019060005b81811015615ad757845183529383019391830191600101615abb565b5090979650505050505050565b60008060408385031215615af757600080fd5b615b00836156ba565b9150615b0e602084016156ba565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615ba257615ba2615b67565b500490565b60008219821115615bba57615bba615b7d565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c6f57600080fd5b8151610e7a8161597f565b600181811c90821680615c8e57607f821691505b60208210811415615caf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ccf57615ccf615b7d565b500290565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d2557615d25615b7d565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600060208284031215615d6857600080fd5b5051919050565b600082821015615d8157615d81615b7d565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dab57615dab615b67565b500690565b60008251615dc2818460208701615704565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212208103388c618582ea02a780903f97834bf1e06bbf7a424c36c2b0bc50970b992e64736f6c634300080a0033", + "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600a91906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d91600b916200008f565b50600c805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b615eb880620001826000396000f3fe608060405234801561001057600080fd5b50600436106104335760003560e01c806380ca730811610236578063bf7db2361161013b578063cd2ed8fb116100c3578063ec09302111610087578063ec093021146108c7578063f1b8a9b7146108cf578063f8b2cb4f146108e2578063fde924f7146108f5578063ff9b18501461090757600080fd5b8063cd2ed8fb1461086b578063d4cadf6814610873578063d73dd6231461087b578063dd62ed3e1461088e578063e4a28a52146104a957600080fd5b8063c44a42831161010a578063c44a42831461082d578063c6580d1214610835578063c98a59cf1461083d578063caa0114814610850578063cc77828d1461086357600080fd5b8063bf7db236146107dc578063c070a6d8146107f2578063c36596a6146104d6578063c421a3fc1461080557600080fd5b8063a9059cbb116101be578063b7b800a41161018d578063b7b800a4146107a7578063ba019dab146107af578063bc063e1a146107b7578063bc694ea2146107bf578063be3bbd2e146107c757600080fd5b8063a9059cbb14610779578063ab77a2de1461078c578063b02f0b7314610794578063b0e0d136146107a757600080fd5b80639381cd2b116102055780639381cd2b1461073b578063948d8ce61461074357806395d89b4114610756578063992e2a921461075e578063a3b3a16d1461076657600080fd5b806380ca730814610711578063867378c5146107195780638d4e408314610721578063936c34771461073357600080fd5b80633950b3fd1161033c5780635e123add116102c4578063703305181161029357806370330518146106a457806370a08231146106b757806376c7a3c7146106e05780637a284be4146106e85780637c5918b3146106f157600080fd5b80635e123add14610663578063638c9e951461066b578063661884631461067e5780636d06dfa01461069157600080fd5b80634df947d01161030b5780634df947d0146106125780634f69c0d4146106235780635c3f1532146106365780635d1ca631146106495780635db342771461065057600080fd5b80633950b3fd146105c8578063430ed5d0146105db578063458c3fb5146105ee57806346ab38f1146105ff57600080fd5b806323b872dd116103bf578063300621921161038e578063300621921461053f5780633018205f1461055f578063313ce5671461058a57806334e19907146105a3578063392e53cd146105b657600080fd5b806323b872dd146104e557806329b88a6a146104f85780632eebd6ae146105005780632f37b6241461051357600080fd5b806309a3bbe41161040657806309a3bbe4146104a957806309ef3f5b146104b157806318160ddd146104c6578063189d00ca146104ce578063218b5382146104d657600080fd5b806302c967481461043857806306fdde031461045e578063079492d414610473578063095ea7b314610486575b600080fd5b61044b6104463660046156e7565b61091a565b6040519081526020015b60405180910390f35b610466610d7b565b6040516104559190615746565b61044b610481366004615779565b610e0d565b6104996104943660046157b5565b610e97565b6040519015158152602001610455565b61044b610ef2565b6104c46104bf3660046157df565b610f08565b005b60095461044b565b61044b611144565b61044b670de0b6b3a764000081565b6104996104f3366004615779565b61115b565b61044b6112af565b61044b61050e366004615837565b611329565b610499610521366004615879565b6001600160a01b031660009081526010602052604090205460ff1690565b61044b61054d366004615879565b60056020526000908152604090205481565b600c546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610455565b600c5460ff165b60405160ff9091168152602001610455565b6104c46105b1366004615894565b61138a565b601254600160a01b900460ff16610499565b61044b6105d63660046157b5565b6114c3565b61044b6105e93660046157b5565b61152b565b6003546001600160a01b0316610572565b61044b61060d3660046156e7565b61158b565b6004546001600160a01b0316610572565b6104c46106313660046158f2565b611991565b600e54610572906001600160a01b031681565b6001610591565b61044b61065e3660046156e7565b611bb8565b60005461044b565b600d54610572906001600160a01b031681565b61049961068c3660046157b5565b611f79565b61044b61069f3660046156e7565b61204f565b6104c46106b2366004615879565b61242b565b61044b6106c5366004615879565b6001600160a01b031660009081526007602052604090205490565b61044b612528565b61044b60005481565b61044b6106ff366004615879565b60066020526000908152604090205481565b6104c461253d565b61044b6126cf565b600e54600160a01b900460ff16610499565b61044b6126e6565b61044b612718565b61044b610751366004615879565b61272b565b610466612782565b61044b612791565b61044b6107743660046157b5565b6127af565b6104996107873660046157b5565b61280f565b6104c4612825565b6104c46107a23660046158f2565b612993565b61044b600281565b61044b600181565b61044b612bef565b61044b612c02565b6107cf612c21565b6040516104559190615982565b6107e4612cd4565b604051610455929190615995565b610499610800366004615a0b565b612e44565b610818610813366004615ab8565b6130b4565b60408051928352602083019190915201610455565b6107e461355b565b61044b600081565b61081861084b366004615ab8565b6136c0565b61044b61085e366004615837565b613b04565b6107cf613b5a565b600f5461044b565b60015461044b565b6104996108893660046157b5565b613b85565b61044b61089c366004615afa565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61044b613bf8565b61044b6108dd366004615879565b613c0b565b61044b6108f0366004615879565b613c69565b600c54600160b01b900460ff16610499565b61044b6109153660046157b5565b613cbc565b600c54600090610100900460ff161561094e5760405162461bcd60e51b815260040161094590615b2d565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109865760405162461bcd60e51b815260040161094590615b52565b61098f84613d1c565b6001600160a01b03841660009081526010602052604090206003908101546109d3916109c390670de0b6b3a7640000615ba9565b6109ce906001615bbd565b613d77565b8311156109f25760405162461bcd60e51b815260040161094590615bd5565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a279392919088613e5c565b915081610a465760405162461bcd60e51b815260040161094590615c00565b82821115610a665760405162461bcd60e51b815260040161094590615c29565b610a74816003015485613f20565b60038201556000610a858382613d77565b604080518781524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051838152600080516020615e238339815191529060200160405180910390a1610ae63384613f7d565b610af8610af38483613f20565b613f87565b600254610b0e906001600160a01b031682613f90565b610b19863387613f9a565b6003546000906001600160a01b0388811691161415610b4457506004546001600160a01b0316610b52565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b8a9291169085908990600401615c4f565b602060405180830381865afa158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb9190615c73565b15610d6657600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610c07939291908a613fb3565b9050610c17826003015482613f20565b6003830155610c27866000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c54610c84906201000090046001600160a01b031687613f7d565b610c91610af38786613f20565b600254610ca7906001600160a01b031685613f90565b600c54610cc59084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b50505050600080516020615e0383398151915286604051610d5b91815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d8a90615c90565b80601f0160208091040260200160405190810160405280929190818152602001828054610db690615c90565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e385760405162461bcd60e51b815260040161094590615b2d565b610e4184613d1c565b610e4a83613d1c565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e8b9391908861407d565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e6383398151915290610ee09086815260200190565b60405180910390a35060015b92915050565b610f05670de0b6b3a76400006032615ccb565b81565b600c54610100900460ff1615610f305760405162461bcd60e51b815260040161094590615b2d565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f995760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b6044820152606401610945565b6003546001600160a01b03878116911614610ff65760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f414444524553530000006044820152606401610945565b6004546001600160a01b038481169116146110535760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f62617365546f6b656e5f414444524553530000006044820152606401610945565b61105e868686614109565b604080518681524260208201526001600160a01b038816913391600080516020615e43833981519152910160405180910390a361109c838383614109565b604080518381524260208201526001600160a01b038516913391600080516020615e43833981519152910160405180910390a36110d76142f3565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610f056402540be400670de0b6b3a7640000615ba9565b6000336001600160a01b038516148061119757506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111db5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b6044820152606401610945565b6111e6848484614352565b336001600160a01b0385161480159061122457506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b156112a5576001600160a01b03841660009081526008602090815260408083203384529091529020546112579083613f20565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e63833981519152910160405180910390a35b5060019392505050565b6002546004805460405163b8421e2b60e01b81526001600160a01b0391821692810192909252600092169063b8421e2b90602401602060405180830381865afa158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113249190615cea565b905090565b600061133485613d1c565b61133d84613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614464565b979650505050505050565b600c546201000090046001600160a01b031633146113df5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6113f4620f4240670de0b6b3a7640000615ba9565b8110156114315760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b611444600a670de0b6b3a7640000615ba9565b8111156114815760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614516565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613fb3565b600c54600090610100900460ff16156115b65760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166115ee5760405162461bcd60e51b815260040161094590615b52565b6115f784613d1c565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461162c9392919088613fb3565b91508282101561164e5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b0385166000908152601060205260409020600390810154611682916109c390670de0b6b3a7640000615ba9565b8211156116a15760405162461bcd60e51b815260040161094590615bd5565b6116af816003015483613f20565b600382015560006116c08582613d77565b604080518581524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051858152600080516020615e238339815191529060200160405180910390a16117213386613f7d565b61172e610af38683613f20565b600254611744906001600160a01b031682613f90565b61174f863385613f9a565b6003546000906001600160a01b038881169116141561177a57506004546001600160a01b0316611788565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117c09291169085908b90600401615c4f565b602060405180830381865afa1580156117dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118019190615c73565b15610d6657600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461183d939291908c613fb3565b905061184d826003015482613f20565b600383015561185d886000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c546118ba906201000090046001600160a01b031689613f7d565b6118c7610af38986613f20565b6002546118dd906001600160a01b031685613f90565b600c546118fb9084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b50505050600080516020615e0383398151915288604051610d5b91815260200190565b600c54610100900460ff16156119b95760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166119f15760405162461bcd60e51b815260040161094590615b52565b60006119fc60095490565b90506000611a0a858361459a565b905080611a295760405162461bcd60e51b815260040161094590615c00565b60005b600f54811015611b71576000600f8281548110611a4b57611a4b615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611a808583613d77565b905080611a9f5760405162461bcd60e51b815260040161094590615c00565b878785818110611ab157611ab1615d2a565b90506020020135811115611ad75760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038316600090815260106020526040902060030154611afd90826146b2565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e4383398151915290611b489085904290918252602082015260400190565b60405180910390a3611b5b833383614704565b5050508080611b6990615d40565b915050611a2c565b50611b7b85614719565b611b853386613f90565b604051858152600080516020615e238339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611be35760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff16611c1b5760405162461bcd60e51b815260040161094590615b52565b611c2484613d1c565b6001600160a01b038416600090815260106020526040902060030154611c57906109ce6002670de0b6b3a7640000615ba9565b831115611c765760405162461bcd60e51b815260040161094590615d5b565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611cab9392919088614516565b915082821015611ccd5760405162461bcd60e51b815260040161094590615d03565b611cdb8160030154856146b2565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051828152600080516020615e238339815191529060200160405180910390a1611d3d82614719565b611d473383613f90565b611d52853386614704565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611d8c939092909189614722565b6003549091506001600160a01b0389811691161415611db8576004546001600160a01b03169150611dc7565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611dff9291169086908690600401615c4f565b602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e409190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611e7d9291169086908690600401615c4f565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b50505050611ebd8360030154826146b2565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e43833981519152910160405180910390a3604051858152600080516020615e038339815191529060200160405180910390a1611f2985614719565b600c54611f45906201000090046001600160a01b031686613f90565b600c54611f639083906201000090046001600160a01b031683614704565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611fce573360009081526008602090815260408083206001600160a01b0388168452909152812055611ffd565b611fd88184613f20565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e63833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff161561207a5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166120b25760405162461bcd60e51b815260040161094590615b52565b6120bb84613d1c565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546120f09392919088614722565b91508161210f5760405162461bcd60e51b815260040161094590615c00565b8282111561212f5760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038516600090815260106020526040902060030154612162906109ce6002670de0b6b3a7640000615ba9565b8211156121815760405162461bcd60e51b815260040161094590615d5b565b61218f8160030154836146b2565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051848152600080516020615e238339815191529060200160405180910390a16121f184614719565b6121fb3385613f90565b612206853384614704565b600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461223d939291908a614722565b6003549091506000906001600160a01b038981169116141561226b57506004546001600160a01b0316612279565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122b19291169085908790600401615c4f565b602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f29190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261232f9291169085908790600401615c4f565b600060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b5050505061236f8360030154836146b2565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e43833981519152910160405180910390a36123ba87614719565b600c546123d6906201000090046001600160a01b031688613f90565b600c546123f49082906201000090046001600160a01b031684614704565b604051878152600080516020615e038339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b600d546001600160a01b0316331461247d5760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b6044820152606401610945565b6001600160a01b0381166124d35760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f7220616464726573730000006044820152606401610945565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b891016114b8565b610f05620f4240670de0b6b3a7640000615ba9565b6000612547612c21565b905060005b81518110156126cb5760006006600084848151811061256d5761256d615d2a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205490506000600660008585815181106125b0576125b0615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612628600d60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b60200260200101516001600160a01b03166147bc9092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061267257612672615d2a565b6020026020010151846040516126b094939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126c381615d40565b91505061254c565b5050565b610f0564e8d4a51000670de0b6b3a7640000615ba9565b600c54600090610100900460ff16156127115760405162461bcd60e51b815260040161094590615b2d565b5060115490565b610f05670de0b6b3a76400006064615ccb565b600c54600090610100900460ff16156127565760405162461bcd60e51b815260040161094590615b2d565b61275f82613d1c565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d8a90615c90565b6127a46003670de0b6b3a7640000615ba9565b610f05906001615bbd565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613e5c565b600061281c338484614352565b50600192915050565b600061282f612c21565b905060005b81518110156126cb5760006005600084848151811061285557612855615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006005600085858151811061289857612898615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055506128f0600e60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b7fed2b0288692cfc6d01c94a67a53721792f59c3d1388221f8aa4f66c8d2808dde33600e60009054906101000a90046001600160a01b031685858151811061293a5761293a615d2a565b60200260200101518460405161297894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a1508061298b81615d40565b915050612834565b600c54610100900460ff16156129bb5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166129f35760405162461bcd60e51b815260040161094590615b52565b60006129fe60095490565b90506000612a0d856000613d77565b90506000612a1b8683613f20565b90506000612a29828561459a565b905080612a485760405162461bcd60e51b815260040161094590615c00565b612a523388613f7d565b600254612a68906001600160a01b031684613f90565b612a7182613f87565b60005b600f54811015612bb9576000600f8281548110612a9357612a93615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090612ac88583613d77565b905080612ae75760405162461bcd60e51b815260040161094590615c00565b898985818110612af957612af9615d2a565b90506020020135811015612b1f5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b038316600090815260106020526040902060030154612b459082613f20565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615de383398151915290612b909085904290918252602082015260400190565b60405180910390a3612ba3833383613f9a565b5050508080612bb190615d40565b915050612a74565b50604051878152600080516020615e238339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610f05600a670de0b6b3a7640000615ba9565b6001612c17670de0b6b3a76400006002615ccb565b610f059190615d85565b600c54606090610100900460ff1615612c4c5760405162461bcd60e51b815260040161094590615b2d565b600e54600160a01b900460ff16612c755760405162461bcd60e51b815260040161094590615b52565b600f805480602002602001604051908101604052809291908181526020018280548015610e0357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cad575050505050905090565b6060806000612ce1612c21565b90506000815167ffffffffffffffff811115612cff57612cff615d9c565b604051908082528060200260200182016040528015612d28578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612d4757612d47615d9c565b604051908082528060200260200182016040528015612d70578160200160208202803683370190505b50905060005b8351811015612e3957838181518110612d9157612d91615d2a565b6020026020010151838281518110612dab57612dab615d2a565b60200260200101906001600160a01b031690816001600160a01b03168152505060056000858381518110612de157612de1615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110612e1c57612e1c615d2a565b602090810291909101015280612e3181615d40565b915050612d76565b509094909350915050565b601254600090600160a01b900460ff1615612ea15760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a45440000000000000000006044820152606401610945565b6001600160a01b038916612ef75760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f4144445245535300006044820152606401610945565b6001600160a01b038816612f4d5760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f4144445245535300000000006044820152606401610945565b612f62620f4240670de0b6b3a7640000615ba9565b87876000818110612f7557612f75615d2a565b905060200201351015612fb85760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b612fcb600a670de0b6b3a7640000615ba9565b87876000818110612fde57612fde615d2a565b9050602002013511156130215760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b6130a78989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a90600290839083908082843760009201919091525061481f915050565b9998505050505050505050565b600c546000908190610100900460ff16156130e15760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166131195760405162461bcd60e51b815260040161094590615b52565b6131388460005b6020020160208101906131339190615879565b613d1c565b613143846001613120565b60006010816131556020880188615879565b6001600160a01b0316815260208101919091526040016000908120915060108187600160200201602081019061318b9190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506131ca82600301546002670de0b6b3a76400006109ce9190615ba9565b853511156131ea5760405162461bcd60e51b815260040161094590615d5b565b600061322083600301548460020154846003015485600201548a60036004811061321657613216615d2a565b602002013561407d565b9050604086013581111561326c5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916132c39082908a35906132b9908d018d615879565b60608c013561495d565b909750915060208801358710156132ec5760405162461bcd60e51b815260040161094590615d03565b6132fa8560030154836146b2565b8560030181905550613310846003015488613f20565b846003018190555061334285600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156133645760405162461bcd60e51b815260040161094590615c00565b60408801358611156133aa5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6133b588358861459a565b8311156133d45760405162461bcd60e51b815260040161094590615c00565b6133e460408a0160208b01615879565b6001600160a01b03166133fa60208b018b615879565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461346261345a60208b018b615879565b338a35614704565b600061348c8935613487816109ce670de0b6b3a76400008e60035b6020020135613f20565b613f20565b9050606089013515613527576134d08a60025b6020020160208101906134b29190615879565b826134c060208e018e615879565b6001600160a01b031691906147bc565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61350160608c0160408d01615879565b61350e60208d018d615879565b8360405161351e93929190615c4f565b60405180910390a15b61354161353a60408c0160208d01615879565b338a613f9a565b505050505050600c805461ff001916905590939092509050565b6060806000613568612c21565b90506000815167ffffffffffffffff81111561358657613586615d9c565b6040519080825280602002602001820160405280156135af578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156135ce576135ce615d9c565b6040519080825280602002602001820160405280156135f7578160200160208202803683370190505b50905060005b8351811015612e395783818151811061361857613618615d2a565b602002602001015183828151811061363257613632615d2a565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061366857613668615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106136a3576136a3615d2a565b6020908102919091010152806136b881615d40565b9150506135fd565b600c546000908190610100900460ff16156136ed5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166137255760405162461bcd60e51b815260040161094590615b52565b613730846000613120565b61373b846001613120565b600060108161374d6020880188615879565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906137839190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506137c281600301546003670de0b6b3a76400006109c39190615ba9565b602086013511156137e55760405162461bcd60e51b815260040161094590615bd5565b600061381183600301548460020154846003015485600201548a60036004811061321657613216615d2a565b9050604086013581111561385d5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916138b69082908a810135906138ac908d018d615879565b60608c0135614b75565b909750915087358711156138dc5760405162461bcd60e51b815260040161094590615c29565b6138ea8560030154836146b2565b6003808701919091558401546139029089600161347d565b846003018190555061393485600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156139565760405162461bcd60e51b815260040161094590615c00565b604088013586111561399c5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6139aa8760208a013561459a565b8311156139c95760405162461bcd60e51b815260040161094590615c00565b6139d960408a0160208b01615879565b6001600160a01b03166139ef60208b018b615879565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a4613a5a613a5360208b018b615879565b3389614704565b6000613a7888613487816109ce670de0b6b3a76400008e600361347d565b9050606089013515613ae657613a8f8a600261349f565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae613ac060608c0160408d01615879565b613acd60208d018d615879565b83604051613add93929190615c4f565b60405180910390a15b613541613af960408c0160208d01615879565b3360208c0135613f9a565b6000613b0f85613d1c565b613b1884613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614d99565b600c54606090610100900460ff1615612c755760405162461bcd60e51b815260040161094590615b2d565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613bb390836146b2565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e638339815191529101610ee0565b610f056002670de0b6b3a7640000615ba9565b600c54600090610100900460ff1615613c365760405162461bcd60e51b815260040161094590615b2d565b613c3f82613d1c565b6001600160a01b038216600090815260106020526040902060020154601154610e9090829061459a565b600c54600090610100900460ff1615613c945760405162461bcd60e51b815260040161094590615b2d565b613c9d82613d1c565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614722565b6001600160a01b03811660009081526010602052604090205460ff16613d745760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b6044820152606401610945565b50565b600080613d848385615ccb565b9050831580613d9b575082613d998583615ba9565b145b613dda5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613def6002670de0b6b3a7640000615ba9565b613df99083615bbd565b905081811015613e3e5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613e52670de0b6b3a764000083615ba9565b9695505050505050565b600080613e69868561459a565b90506000613e7f670de0b6b3a764000083613f20565b90506000613e8f82600154613d77565b90506000613eae86613ea9670de0b6b3a764000085613f20565b61459a565b90506000613ebc8b83613f20565b90506000613eca828d61459a565b90506000613ed88288614e4d565b90506000613ee6828d613d77565b90506000613ef48d83613f20565b9050613f0d81613ea9670de0b6b3a76400006000613f20565b9f9e505050505050505050505050505050565b6000806000613f2f8585614f6e565b915091508015613f755760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b6044820152606401610945565b509392505050565b6126cb8282614fa5565b613d7481614fb0565b6126cb828261507c565b613fae6001600160a01b03841683836147bc565b505050565b600080613fc0868561459a565b90506000613fdb846109ce670de0b6b3a76400006000613f20565b90506000613fe98783613f20565b90506000613ff7828961459a565b9050600061401682614011670de0b6b3a76400008861459a565b614e4d565b90506000614024828d613d77565b905060006140328d83613f20565b9050600061405361404b670de0b6b3a76400008a613f20565b600154613d77565b905061406b826109ce670de0b6b3a764000084613f20565b9e9d5050505050505050505050505050565b60008061408a878761459a565b90506000614098868661459a565b905060006140a6838361459a565b905060006140ef670de0b6b3a7640000613ea9670de0b6b3a7640000896000546140ce6112af565b6001546140db9190615bbd565b6140e59190615bbd565b6134879190615bbd565b90506140fb8282613d77565b9a9950505050505050505050565b600c546201000090046001600160a01b0316331461415e5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6001600160a01b03831660009081526010602052604090205460ff16156141b65760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b6044820152606401610945565b600e54600160a01b900460ff16156142035760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b6044820152606401610945565b600f546002116142465760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b6044820152606401610945565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613fae838383615087565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561433461432f670de0b6b3a76400006064615ccb565b614719565b6143503361434b670de0b6b3a76400006064615ccb565b613f90565b565b6001600160a01b0383166000908152600760205260409020548111156143b15760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b6001600160a01b0383166000908152600760205260409020546143d49082613f20565b6001600160a01b03808516600090815260076020526040808220939093559084168152205461440390826146b2565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144579085815260200190565b60405180910390a3505050565b600080614471878661459a565b905060008054846144806112af565b60015461448d9190615bbd565b6144979190615bbd565b6144a19190615bbd565b905060006144b7670de0b6b3a764000083613f20565b90506144c38682613d77565b905060006144d58b613ea98d856146b2565b905060006144e38286614e4d565b905060006144f9670de0b6b3a764000083613f20565b90506145058b82613d77565b9d9c50505050505050505050505050565b600080614523868561459a565b9050600061453c61404b670de0b6b3a764000084613f20565b90506000614556856109ce670de0b6b3a764000085613f20565b905060006145648a836146b2565b90506000614572828c61459a565b905060006145808287614e4d565b9050600061458e828c613d77565b9050614505818c613f20565b6000816145d85760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b6044820152606401610945565b60006145ec670de0b6b3a764000085615ccb565b905083158061460b5750670de0b6b3a76400006146098583615ba9565b145b61464a5760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000614657600285615ba9565b6146619083615bbd565b9050818110156146a65760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000613e528583615ba9565b6000806146bf8385615bbd565b905083811015610e905760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b6044820152606401610945565b613fae6001600160a01b0384168330846152d7565b613d74816152fe565b60008061472f868561459a565b9050600061473d86856146b2565b9050600061474b828861459a565b90506000614761670de0b6b3a76400008561459a565b9050600061476f8383614e4d565b9050600061477d828d613d77565b9050600061478b828e613f20565b905060006147a461404b670de0b6b3a76400008a613f20565b905061406b82613ea9670de0b6b3a764000084613f20565b6040516001600160a01b038316602482015260448101829052613fae90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261536d565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061487557614875615d2a565b60200260200101516001819055508560018151811061489657614896615d2a565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061497a87600160200201518860035b602002015161459a565b9050600061499a87613487896109ce670de0b6b3a76400006134876112af565b6001600160a01b0387166000908152600560205260409020549091506149c090826146b2565b60056000886001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614a07886134878a6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038816600090815260066020526040902054909150614a2d90826146b2565b6001600160a01b03881660009081526006602052604081209190915580548790614a556112af565b600154614a629190615bbd565b614a6c9190615bbd565b614a769190615bbd565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614ab58a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614af6670de0b6b3a764000083613f20565b9050614b028a82613d77565b8b51909150600090614b1890613ea981856146b2565b90506000614b268288614e4d565b90506000614b3c670de0b6b3a764000083613f20565b9050614b4f8e6002602002015182613d77565b995089614b608e613487898b615bbd565b99509950505050505050505094509492505050565b60008080614b8c8760036020020151886001614970565b90506000614ba1886002602002015188613f20565b90506000614bb689600260200201518361459a565b90506000614bc48285614e4d565b9050614bd881670de0b6b3a7640000613f20565b90506000805488614be76112af565b600154614bf49190615bbd565b614bfe9190615bbd565b614c089190615bbd565b8b51909150614c2d90614c1b9084613d77565b613ea9670de0b6b3a764000084613f20565b96506000614c4d886134878a6109ce670de0b6b3a76400006134876112af565b6001600160a01b038b16600090815260056020526040902054909150614c7390826146b2565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614cba896134878b6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038c16600090815260066020526040902054909150614ce090826146b2565b6001600160a01b038c166000908152600660205260409020558c51614d1d90614d099086613d77565b613ea9670de0b6b3a7640000600154613f20565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d5c8a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614da6858861459a565b90506000614db48786613f20565b90506000614dc2888361459a565b90506000614dd08285614e4d565b9050614de481670de0b6b3a7640000613f20565b90506000805487614df36112af565b600154614e009190615bbd565b614e0a9190615bbd565b614e149190615bbd565b9050614e28670de0b6b3a764000082613f20565b9550614e3d614e378d84613d77565b8761459a565b9c9b505050505050505050505050565b60006001831015614e985760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b6044820152606401610945565b6001614ead670de0b6b3a76400006002615ccb565b614eb79190615d85565b831115614eff5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b6044820152606401610945565b6000614f0a8361543f565b90506000614f188483613f20565b90506000614f2e86614f298561545d565b615471565b905081614f3f579250610eec915050565b6000614f628784614f5d6402540be400670de0b6b3a7640000615ba9565b6154e5565b905061137f8282613d77565b600080828410614f8d57614f828385615d85565b600091509150614f9e565b614f978484615d85565b6001915091505b9250929050565b6126cb823083614352565b306000908152600760205260409020548111156150065760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b306000908152600760205260409020546150209082613f20565b3060009081526007602052604090205560095461503d9082613f20565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126cb308383614352565b670de0b6b3a76400008110156150d05760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b6044820152606401610945565b6150e3670de0b6b3a76400006032615ccb565b8111156151235760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b6044820152606401610945565b61513a64e8d4a51000670de0b6b3a7640000615ba9565b82101561517b5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b6044820152606401610945565b6001600160a01b03831660009081526010602052604090206002015480821115615217576151b46011546151af8484613f20565b6146b2565b6011556151ca670de0b6b3a76400006032615ccb565b60115411156152125760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b6044820152606401610945565b615233565b808210156152335761522f6011546134878385613f20565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561527c5761527785336152728785613f20565b614704565b6152d0565b808410156152d05760006152908286613f20565b9050600061529f826000613d77565b90506152b587336152b08585613f20565b613f9a565b6002546152cd9088906001600160a01b031683613f9a565b50505b5050505050565b6152f8846323b872dd60e01b8585856040516024016147e893929190615c4f565b50505050565b3060009081526007602052604090205461531890826146b2565b3060009081526007602052604090205560095461533590826146b2565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001615071565b60006153c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155d59092919063ffffffff16565b805190915015613fae57808060200190518101906153e09190615c73565b613fae5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610945565b6000670de0b6b3a76400006154538361545d565b610eec9190615ccb565b6000610eec670de0b6b3a764000083615ba9565b60008281615480600285615db2565b61549257670de0b6b3a7640000615494565b815b90506154a1600285615ba9565b93505b8315611523576154b48283613d77565b91506154c1600285615db2565b156154d3576154d08183613d77565b90505b6154de600285615ba9565b93506154a4565b60008281806154fc87670de0b6b3a7640000614f6e565b9092509050670de0b6b3a764000080600060015b8884106155c657600061552b670de0b6b3a764000083615ccb565b905060008061554b8a61554685670de0b6b3a7640000613f20565b614f6e565b9150915061555d876109ce848c613d77565b9650615569878461459a565b965086615578575050506155c6565b8715615582579315935b801561558c579315935b84156155a35761559c8688613f20565b95506155b0565b6155ad86886146b2565b95505b50505080806155be90615d40565b915050615510565b50909998505050505050505050565b6060611523848460008585843b61562e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610945565b600080866001600160a01b0316858760405161564a9190615dc6565b60006040518083038185875af1925050503d8060008114615687576040519150601f19603f3d011682016040523d82523d6000602084013e61568c565b606091505b509150915061137f828286606083156156a6575081610e90565b8251156156b65782518084602001fd5b8160405162461bcd60e51b81526004016109459190615746565b80356001600160a01b038116811461277d57600080fd5b6000806000606084860312156156fc57600080fd5b615705846156d0565b95602085013595506040909401359392505050565b60005b8381101561573557818101518382015260200161571d565b838111156152f85750506000910152565b602081526000825180602084015261576581604085016020870161571a565b601f01601f19169190910160400192915050565b60008060006060848603121561578e57600080fd5b615797846156d0565b92506157a5602085016156d0565b9150604084013590509250925092565b600080604083850312156157c857600080fd5b6157d1836156d0565b946020939093013593505050565b60008060008060008060c087890312156157f857600080fd5b615801876156d0565b9550602087013594506040870135935061581d606088016156d0565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561584d57600080fd5b615856856156d0565b9350615864602086016156d0565b93969395505050506040820135916060013590565b60006020828403121561588b57600080fd5b610e90826156d0565b6000602082840312156158a657600080fd5b5035919050565b60008083601f8401126158bf57600080fd5b50813567ffffffffffffffff8111156158d757600080fd5b6020830191508360208260051b8501011115614f9e57600080fd5b60008060006040848603121561590757600080fd5b83359250602084013567ffffffffffffffff81111561592557600080fd5b615931868287016158ad565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159775781516001600160a01b031687529582019590820190600101615952565b509495945050505050565b602081526000610e90602083018461593e565b6040815260006159a8604083018561593e565b82810360208481019190915284518083528582019282019060005b818110156159df578451835293830193918301916001016159c3565b5090979650505050505050565b8015158114613d7457600080fd5b8060408101831015610eec57600080fd5b600080600080600080600080610120898b031215615a2857600080fd5b615a31896156d0565b9750615a3f60208a016156d0565b9650604089013567ffffffffffffffff811115615a5b57600080fd5b615a678b828c016158ad565b9097509550506060890135615a7b816159ec565b93506080890135615a8b816159ec565b9250615a9a8a60a08b016159fa565b9150615aa98a60e08b016159fa565b90509295985092959890939650565b60008060e08385031215615acb57600080fd5b6060830184811115615adc57600080fd5b8392508460e085011115615aef57600080fd5b809150509250929050565b60008060408385031215615b0d57600080fd5b615b16836156d0565b9150615b24602084016156d0565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615bb857615bb8615b7d565b500490565b60008219821115615bd057615bd0615b93565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c8557600080fd5b8151610e90816159ec565b600181811c90821680615ca457607f821691505b60208210811415615cc557634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ce557615ce5615b93565b500290565b600060208284031215615cfc57600080fd5b5051919050565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d5457615d54615b93565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600082821015615d9757615d97615b93565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dc157615dc1615b7d565b500690565b60008251615dd881846020870161571a565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220dd27ead8c9c3c0bb206313d54c68f9281b11dfee1171b5653a1419897a2c772764736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104335760003560e01c806380ca730811610236578063bf7db2361161013b578063cd2ed8fb116100c3578063ec09302111610087578063ec093021146108c7578063f1b8a9b7146108cf578063f8b2cb4f146108e2578063fde924f7146108f5578063ff9b18501461090757600080fd5b8063cd2ed8fb1461086b578063d4cadf6814610873578063d73dd6231461087b578063dd62ed3e1461088e578063e4a28a52146104a957600080fd5b8063c44a42831161010a578063c44a42831461082d578063c6580d1214610835578063c98a59cf1461083d578063caa0114814610850578063cc77828d1461086357600080fd5b8063bf7db236146107dc578063c070a6d8146107f2578063c36596a6146104d6578063c421a3fc1461080557600080fd5b8063a9059cbb116101be578063b7b800a41161018d578063b7b800a4146107a7578063ba019dab146107af578063bc063e1a146107b7578063bc694ea2146107bf578063be3bbd2e146107c757600080fd5b8063a9059cbb14610779578063ab77a2de1461078c578063b02f0b7314610794578063b0e0d136146107a757600080fd5b80639381cd2b116102055780639381cd2b1461073b578063948d8ce61461074357806395d89b4114610756578063992e2a921461075e578063a3b3a16d1461076657600080fd5b806380ca730814610711578063867378c5146107195780638d4e408314610721578063936c34771461073357600080fd5b80633950b3fd1161033c5780635e123add116102c4578063703305181161029357806370330518146106a457806370a08231146106b757806376c7a3c7146106e05780637a284be4146106e85780637c5918b3146106f157600080fd5b80635e123add14610663578063638c9e951461066b578063661884631461067e5780636d06dfa01461069157600080fd5b80634df947d01161030b5780634df947d0146106125780634f69c0d4146106235780635c3f1532146106365780635d1ca631146106495780635db342771461065057600080fd5b80633950b3fd146105c8578063430ed5d0146105db578063458c3fb5146105ee57806346ab38f1146105ff57600080fd5b806323b872dd116103bf578063300621921161038e578063300621921461053f5780633018205f1461055f578063313ce5671461058a57806334e19907146105a3578063392e53cd146105b657600080fd5b806323b872dd146104e557806329b88a6a146104f85780632eebd6ae146105005780632f37b6241461051357600080fd5b806309a3bbe41161040657806309a3bbe4146104a957806309ef3f5b146104b157806318160ddd146104c6578063189d00ca146104ce578063218b5382146104d657600080fd5b806302c967481461043857806306fdde031461045e578063079492d414610473578063095ea7b314610486575b600080fd5b61044b6104463660046156e7565b61091a565b6040519081526020015b60405180910390f35b610466610d7b565b6040516104559190615746565b61044b610481366004615779565b610e0d565b6104996104943660046157b5565b610e97565b6040519015158152602001610455565b61044b610ef2565b6104c46104bf3660046157df565b610f08565b005b60095461044b565b61044b611144565b61044b670de0b6b3a764000081565b6104996104f3366004615779565b61115b565b61044b6112af565b61044b61050e366004615837565b611329565b610499610521366004615879565b6001600160a01b031660009081526010602052604090205460ff1690565b61044b61054d366004615879565b60056020526000908152604090205481565b600c546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610455565b600c5460ff165b60405160ff9091168152602001610455565b6104c46105b1366004615894565b61138a565b601254600160a01b900460ff16610499565b61044b6105d63660046157b5565b6114c3565b61044b6105e93660046157b5565b61152b565b6003546001600160a01b0316610572565b61044b61060d3660046156e7565b61158b565b6004546001600160a01b0316610572565b6104c46106313660046158f2565b611991565b600e54610572906001600160a01b031681565b6001610591565b61044b61065e3660046156e7565b611bb8565b60005461044b565b600d54610572906001600160a01b031681565b61049961068c3660046157b5565b611f79565b61044b61069f3660046156e7565b61204f565b6104c46106b2366004615879565b61242b565b61044b6106c5366004615879565b6001600160a01b031660009081526007602052604090205490565b61044b612528565b61044b60005481565b61044b6106ff366004615879565b60066020526000908152604090205481565b6104c461253d565b61044b6126cf565b600e54600160a01b900460ff16610499565b61044b6126e6565b61044b612718565b61044b610751366004615879565b61272b565b610466612782565b61044b612791565b61044b6107743660046157b5565b6127af565b6104996107873660046157b5565b61280f565b6104c4612825565b6104c46107a23660046158f2565b612993565b61044b600281565b61044b600181565b61044b612bef565b61044b612c02565b6107cf612c21565b6040516104559190615982565b6107e4612cd4565b604051610455929190615995565b610499610800366004615a0b565b612e44565b610818610813366004615ab8565b6130b4565b60408051928352602083019190915201610455565b6107e461355b565b61044b600081565b61081861084b366004615ab8565b6136c0565b61044b61085e366004615837565b613b04565b6107cf613b5a565b600f5461044b565b60015461044b565b6104996108893660046157b5565b613b85565b61044b61089c366004615afa565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61044b613bf8565b61044b6108dd366004615879565b613c0b565b61044b6108f0366004615879565b613c69565b600c54600160b01b900460ff16610499565b61044b6109153660046157b5565b613cbc565b600c54600090610100900460ff161561094e5760405162461bcd60e51b815260040161094590615b2d565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109865760405162461bcd60e51b815260040161094590615b52565b61098f84613d1c565b6001600160a01b03841660009081526010602052604090206003908101546109d3916109c390670de0b6b3a7640000615ba9565b6109ce906001615bbd565b613d77565b8311156109f25760405162461bcd60e51b815260040161094590615bd5565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a279392919088613e5c565b915081610a465760405162461bcd60e51b815260040161094590615c00565b82821115610a665760405162461bcd60e51b815260040161094590615c29565b610a74816003015485613f20565b60038201556000610a858382613d77565b604080518781524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051838152600080516020615e238339815191529060200160405180910390a1610ae63384613f7d565b610af8610af38483613f20565b613f87565b600254610b0e906001600160a01b031682613f90565b610b19863387613f9a565b6003546000906001600160a01b0388811691161415610b4457506004546001600160a01b0316610b52565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b8a9291169085908990600401615c4f565b602060405180830381865afa158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb9190615c73565b15610d6657600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610c07939291908a613fb3565b9050610c17826003015482613f20565b6003830155610c27866000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c54610c84906201000090046001600160a01b031687613f7d565b610c91610af38786613f20565b600254610ca7906001600160a01b031685613f90565b600c54610cc59084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b50505050600080516020615e0383398151915286604051610d5b91815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d8a90615c90565b80601f0160208091040260200160405190810160405280929190818152602001828054610db690615c90565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e385760405162461bcd60e51b815260040161094590615b2d565b610e4184613d1c565b610e4a83613d1c565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e8b9391908861407d565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e6383398151915290610ee09086815260200190565b60405180910390a35060015b92915050565b610f05670de0b6b3a76400006032615ccb565b81565b600c54610100900460ff1615610f305760405162461bcd60e51b815260040161094590615b2d565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f995760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b6044820152606401610945565b6003546001600160a01b03878116911614610ff65760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f414444524553530000006044820152606401610945565b6004546001600160a01b038481169116146110535760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f62617365546f6b656e5f414444524553530000006044820152606401610945565b61105e868686614109565b604080518681524260208201526001600160a01b038816913391600080516020615e43833981519152910160405180910390a361109c838383614109565b604080518381524260208201526001600160a01b038516913391600080516020615e43833981519152910160405180910390a36110d76142f3565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610f056402540be400670de0b6b3a7640000615ba9565b6000336001600160a01b038516148061119757506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111db5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b6044820152606401610945565b6111e6848484614352565b336001600160a01b0385161480159061122457506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b156112a5576001600160a01b03841660009081526008602090815260408083203384529091529020546112579083613f20565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e63833981519152910160405180910390a35b5060019392505050565b6002546004805460405163b8421e2b60e01b81526001600160a01b0391821692810192909252600092169063b8421e2b90602401602060405180830381865afa158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113249190615cea565b905090565b600061133485613d1c565b61133d84613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614464565b979650505050505050565b600c546201000090046001600160a01b031633146113df5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6113f4620f4240670de0b6b3a7640000615ba9565b8110156114315760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b611444600a670de0b6b3a7640000615ba9565b8111156114815760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614516565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613fb3565b600c54600090610100900460ff16156115b65760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166115ee5760405162461bcd60e51b815260040161094590615b52565b6115f784613d1c565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461162c9392919088613fb3565b91508282101561164e5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b0385166000908152601060205260409020600390810154611682916109c390670de0b6b3a7640000615ba9565b8211156116a15760405162461bcd60e51b815260040161094590615bd5565b6116af816003015483613f20565b600382015560006116c08582613d77565b604080518581524260208201529192506001600160a01b038816913391600080516020615de3833981519152910160405180910390a3604051858152600080516020615e238339815191529060200160405180910390a16117213386613f7d565b61172e610af38683613f20565b600254611744906001600160a01b031682613f90565b61174f863385613f9a565b6003546000906001600160a01b038881169116141561177a57506004546001600160a01b0316611788565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117c09291169085908b90600401615c4f565b602060405180830381865afa1580156117dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118019190615c73565b15610d6657600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461183d939291908c613fb3565b905061184d826003015482613f20565b600383015561185d886000613d77565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615de3833981519152910160405180910390a3600c546118ba906201000090046001600160a01b031689613f7d565b6118c7610af38986613f20565b6002546118dd906001600160a01b031685613f90565b600c546118fb9084906201000090046001600160a01b031683613f9a565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b50505050600080516020615e0383398151915288604051610d5b91815260200190565b600c54610100900460ff16156119b95760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166119f15760405162461bcd60e51b815260040161094590615b52565b60006119fc60095490565b90506000611a0a858361459a565b905080611a295760405162461bcd60e51b815260040161094590615c00565b60005b600f54811015611b71576000600f8281548110611a4b57611a4b615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611a808583613d77565b905080611a9f5760405162461bcd60e51b815260040161094590615c00565b878785818110611ab157611ab1615d2a565b90506020020135811115611ad75760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038316600090815260106020526040902060030154611afd90826146b2565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e4383398151915290611b489085904290918252602082015260400190565b60405180910390a3611b5b833383614704565b5050508080611b6990615d40565b915050611a2c565b50611b7b85614719565b611b853386613f90565b604051858152600080516020615e238339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611be35760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff16611c1b5760405162461bcd60e51b815260040161094590615b52565b611c2484613d1c565b6001600160a01b038416600090815260106020526040902060030154611c57906109ce6002670de0b6b3a7640000615ba9565b831115611c765760405162461bcd60e51b815260040161094590615d5b565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611cab9392919088614516565b915082821015611ccd5760405162461bcd60e51b815260040161094590615d03565b611cdb8160030154856146b2565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051828152600080516020615e238339815191529060200160405180910390a1611d3d82614719565b611d473383613f90565b611d52853386614704565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611d8c939092909189614722565b6003549091506001600160a01b0389811691161415611db8576004546001600160a01b03169150611dc7565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611dff9291169086908690600401615c4f565b602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e409190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611e7d9291169086908690600401615c4f565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b50505050611ebd8360030154826146b2565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e43833981519152910160405180910390a3604051858152600080516020615e038339815191529060200160405180910390a1611f2985614719565b600c54611f45906201000090046001600160a01b031686613f90565b600c54611f639083906201000090046001600160a01b031683614704565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611fce573360009081526008602090815260408083206001600160a01b0388168452909152812055611ffd565b611fd88184613f20565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e63833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff161561207a5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166120b25760405162461bcd60e51b815260040161094590615b52565b6120bb84613d1c565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546120f09392919088614722565b91508161210f5760405162461bcd60e51b815260040161094590615c00565b8282111561212f5760405162461bcd60e51b815260040161094590615c29565b6001600160a01b038516600090815260106020526040902060030154612162906109ce6002670de0b6b3a7640000615ba9565b8211156121815760405162461bcd60e51b815260040161094590615d5b565b61218f8160030154836146b2565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e43833981519152910160405180910390a3604051848152600080516020615e238339815191529060200160405180910390a16121f184614719565b6121fb3385613f90565b612206853384614704565b600380546001600160a01b0316600090815260106020526040812091820154600283015460095460115461223d939291908a614722565b6003549091506000906001600160a01b038981169116141561226b57506004546001600160a01b0316612279565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122b19291169085908790600401615c4f565b602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f29190615c73565b15611f63576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261232f9291169085908790600401615c4f565b600060405180830381600087803b15801561234957600080fd5b505af115801561235d573d6000803e3d6000fd5b5050505061236f8360030154836146b2565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e43833981519152910160405180910390a36123ba87614719565b600c546123d6906201000090046001600160a01b031688613f90565b600c546123f49082906201000090046001600160a01b031684614704565b604051878152600080516020615e038339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b600d546001600160a01b0316331461247d5760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b6044820152606401610945565b6001600160a01b0381166124d35760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f7220616464726573730000006044820152606401610945565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b891016114b8565b610f05620f4240670de0b6b3a7640000615ba9565b6000612547612c21565b905060005b81518110156126cb5760006006600084848151811061256d5761256d615d2a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205490506000600660008585815181106125b0576125b0615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612628600d60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b60200260200101516001600160a01b03166147bc9092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061267257612672615d2a565b6020026020010151846040516126b094939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126c381615d40565b91505061254c565b5050565b610f0564e8d4a51000670de0b6b3a7640000615ba9565b600c54600090610100900460ff16156127115760405162461bcd60e51b815260040161094590615b2d565b5060115490565b610f05670de0b6b3a76400006064615ccb565b600c54600090610100900460ff16156127565760405162461bcd60e51b815260040161094590615b2d565b61275f82613d1c565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d8a90615c90565b6127a46003670de0b6b3a7640000615ba9565b610f05906001615bbd565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087613e5c565b600061281c338484614352565b50600192915050565b600061282f612c21565b905060005b81518110156126cb5760006005600084848151811061285557612855615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006005600085858151811061289857612898615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055506128f0600e60009054906101000a90046001600160a01b03168285858151811061260857612608615d2a565b7fed2b0288692cfc6d01c94a67a53721792f59c3d1388221f8aa4f66c8d2808dde33600e60009054906101000a90046001600160a01b031685858151811061293a5761293a615d2a565b60200260200101518460405161297894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a1508061298b81615d40565b915050612834565b600c54610100900460ff16156129bb5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166129f35760405162461bcd60e51b815260040161094590615b52565b60006129fe60095490565b90506000612a0d856000613d77565b90506000612a1b8683613f20565b90506000612a29828561459a565b905080612a485760405162461bcd60e51b815260040161094590615c00565b612a523388613f7d565b600254612a68906001600160a01b031684613f90565b612a7182613f87565b60005b600f54811015612bb9576000600f8281548110612a9357612a93615d2a565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090612ac88583613d77565b905080612ae75760405162461bcd60e51b815260040161094590615c00565b898985818110612af957612af9615d2a565b90506020020135811015612b1f5760405162461bcd60e51b815260040161094590615d03565b6001600160a01b038316600090815260106020526040902060030154612b459082613f20565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615de383398151915290612b909085904290918252602082015260400190565b60405180910390a3612ba3833383613f9a565b5050508080612bb190615d40565b915050612a74565b50604051878152600080516020615e238339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610f05600a670de0b6b3a7640000615ba9565b6001612c17670de0b6b3a76400006002615ccb565b610f059190615d85565b600c54606090610100900460ff1615612c4c5760405162461bcd60e51b815260040161094590615b2d565b600e54600160a01b900460ff16612c755760405162461bcd60e51b815260040161094590615b52565b600f805480602002602001604051908101604052809291908181526020018280548015610e0357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cad575050505050905090565b6060806000612ce1612c21565b90506000815167ffffffffffffffff811115612cff57612cff615d9c565b604051908082528060200260200182016040528015612d28578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612d4757612d47615d9c565b604051908082528060200260200182016040528015612d70578160200160208202803683370190505b50905060005b8351811015612e3957838181518110612d9157612d91615d2a565b6020026020010151838281518110612dab57612dab615d2a565b60200260200101906001600160a01b031690816001600160a01b03168152505060056000858381518110612de157612de1615d2a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110612e1c57612e1c615d2a565b602090810291909101015280612e3181615d40565b915050612d76565b509094909350915050565b601254600090600160a01b900460ff1615612ea15760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a45440000000000000000006044820152606401610945565b6001600160a01b038916612ef75760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f4144445245535300006044820152606401610945565b6001600160a01b038816612f4d5760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f4144445245535300000000006044820152606401610945565b612f62620f4240670de0b6b3a7640000615ba9565b87876000818110612f7557612f75615d2a565b905060200201351015612fb85760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b6044820152606401610945565b612fcb600a670de0b6b3a7640000615ba9565b87876000818110612fde57612fde615d2a565b9050602002013511156130215760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b6044820152606401610945565b6130a78989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a90600290839083908082843760009201919091525061481f915050565b9998505050505050505050565b600c546000908190610100900460ff16156130e15760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166131195760405162461bcd60e51b815260040161094590615b52565b6131388460005b6020020160208101906131339190615879565b613d1c565b613143846001613120565b60006010816131556020880188615879565b6001600160a01b0316815260208101919091526040016000908120915060108187600160200201602081019061318b9190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506131ca82600301546002670de0b6b3a76400006109ce9190615ba9565b853511156131ea5760405162461bcd60e51b815260040161094590615d5b565b600061322083600301548460020154846003015485600201548a60036004811061321657613216615d2a565b602002013561407d565b9050604086013581111561326c5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916132c39082908a35906132b9908d018d615879565b60608c013561495d565b909750915060208801358710156132ec5760405162461bcd60e51b815260040161094590615d03565b6132fa8560030154836146b2565b8560030181905550613310846003015488613f20565b846003018190555061334285600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156133645760405162461bcd60e51b815260040161094590615c00565b60408801358611156133aa5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6133b588358861459a565b8311156133d45760405162461bcd60e51b815260040161094590615c00565b6133e460408a0160208b01615879565b6001600160a01b03166133fa60208b018b615879565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461346261345a60208b018b615879565b338a35614704565b600061348c8935613487816109ce670de0b6b3a76400008e60035b6020020135613f20565b613f20565b9050606089013515613527576134d08a60025b6020020160208101906134b29190615879565b826134c060208e018e615879565b6001600160a01b031691906147bc565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61350160608c0160408d01615879565b61350e60208d018d615879565b8360405161351e93929190615c4f565b60405180910390a15b61354161353a60408c0160208d01615879565b338a613f9a565b505050505050600c805461ff001916905590939092509050565b6060806000613568612c21565b90506000815167ffffffffffffffff81111561358657613586615d9c565b6040519080825280602002602001820160405280156135af578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156135ce576135ce615d9c565b6040519080825280602002602001820160405280156135f7578160200160208202803683370190505b50905060005b8351811015612e395783818151811061361857613618615d2a565b602002602001015183828151811061363257613632615d2a565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061366857613668615d2a565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106136a3576136a3615d2a565b6020908102919091010152806136b881615d40565b9150506135fd565b600c546000908190610100900460ff16156136ed5760405162461bcd60e51b815260040161094590615b2d565b600c805461ff001916610100179055600e54600160a01b900460ff166137255760405162461bcd60e51b815260040161094590615b52565b613730846000613120565b61373b846001613120565b600060108161374d6020880188615879565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906137839190615879565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506137c281600301546003670de0b6b3a76400006109c39190615ba9565b602086013511156137e55760405162461bcd60e51b815260040161094590615bd5565b600061381183600301548460020154846003015485600201548a60036004811061321657613216615d2a565b9050604086013581111561385d5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b6044820152606401610945565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916138b69082908a810135906138ac908d018d615879565b60608c0135614b75565b909750915087358711156138dc5760405162461bcd60e51b815260040161094590615c29565b6138ea8560030154836146b2565b6003808701919091558401546139029089600161347d565b846003018190555061393485600301548660020154866003015487600201548c60036004811061321657613216615d2a565b9550828610156139565760405162461bcd60e51b815260040161094590615c00565b604088013586111561399c5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b6044820152606401610945565b6139aa8760208a013561459a565b8311156139c95760405162461bcd60e51b815260040161094590615c00565b6139d960408a0160208b01615879565b6001600160a01b03166139ef60208b018b615879565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a4613a5a613a5360208b018b615879565b3389614704565b6000613a7888613487816109ce670de0b6b3a76400008e600361347d565b9050606089013515613ae657613a8f8a600261349f565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae613ac060608c0160408d01615879565b613acd60208d018d615879565b83604051613add93929190615c4f565b60405180910390a15b613541613af960408c0160208d01615879565b3360208c0135613f9a565b6000613b0f85613d1c565b613b1884613d1c565b6001600160a01b0380861660009081526010602052604080822092871682529020600380830154600280850154928401549084015461137f9391908989614d99565b600c54606090610100900460ff1615612c755760405162461bcd60e51b815260040161094590615b2d565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613bb390836146b2565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e638339815191529101610ee0565b610f056002670de0b6b3a7640000615ba9565b600c54600090610100900460ff1615613c365760405162461bcd60e51b815260040161094590615b2d565b613c3f82613d1c565b6001600160a01b038216600090815260106020526040902060020154601154610e9090829061459a565b600c54600090610100900460ff1615613c945760405162461bcd60e51b815260040161094590615b2d565b613c9d82613d1c565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461152393919087614722565b6001600160a01b03811660009081526010602052604090205460ff16613d745760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b6044820152606401610945565b50565b600080613d848385615ccb565b9050831580613d9b575082613d998583615ba9565b145b613dda5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613def6002670de0b6b3a7640000615ba9565b613df99083615bbd565b905081811015613e3e5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b6044820152606401610945565b6000613e52670de0b6b3a764000083615ba9565b9695505050505050565b600080613e69868561459a565b90506000613e7f670de0b6b3a764000083613f20565b90506000613e8f82600154613d77565b90506000613eae86613ea9670de0b6b3a764000085613f20565b61459a565b90506000613ebc8b83613f20565b90506000613eca828d61459a565b90506000613ed88288614e4d565b90506000613ee6828d613d77565b90506000613ef48d83613f20565b9050613f0d81613ea9670de0b6b3a76400006000613f20565b9f9e505050505050505050505050505050565b6000806000613f2f8585614f6e565b915091508015613f755760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b6044820152606401610945565b509392505050565b6126cb8282614fa5565b613d7481614fb0565b6126cb828261507c565b613fae6001600160a01b03841683836147bc565b505050565b600080613fc0868561459a565b90506000613fdb846109ce670de0b6b3a76400006000613f20565b90506000613fe98783613f20565b90506000613ff7828961459a565b9050600061401682614011670de0b6b3a76400008861459a565b614e4d565b90506000614024828d613d77565b905060006140328d83613f20565b9050600061405361404b670de0b6b3a76400008a613f20565b600154613d77565b905061406b826109ce670de0b6b3a764000084613f20565b9e9d5050505050505050505050505050565b60008061408a878761459a565b90506000614098868661459a565b905060006140a6838361459a565b905060006140ef670de0b6b3a7640000613ea9670de0b6b3a7640000896000546140ce6112af565b6001546140db9190615bbd565b6140e59190615bbd565b6134879190615bbd565b90506140fb8282613d77565b9a9950505050505050505050565b600c546201000090046001600160a01b0316331461415e5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b6044820152606401610945565b6001600160a01b03831660009081526010602052604090205460ff16156141b65760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b6044820152606401610945565b600e54600160a01b900460ff16156142035760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b6044820152606401610945565b600f546002116142465760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b6044820152606401610945565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613fae838383615087565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561433461432f670de0b6b3a76400006064615ccb565b614719565b6143503361434b670de0b6b3a76400006064615ccb565b613f90565b565b6001600160a01b0383166000908152600760205260409020548111156143b15760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b6001600160a01b0383166000908152600760205260409020546143d49082613f20565b6001600160a01b03808516600090815260076020526040808220939093559084168152205461440390826146b2565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144579085815260200190565b60405180910390a3505050565b600080614471878661459a565b905060008054846144806112af565b60015461448d9190615bbd565b6144979190615bbd565b6144a19190615bbd565b905060006144b7670de0b6b3a764000083613f20565b90506144c38682613d77565b905060006144d58b613ea98d856146b2565b905060006144e38286614e4d565b905060006144f9670de0b6b3a764000083613f20565b90506145058b82613d77565b9d9c50505050505050505050505050565b600080614523868561459a565b9050600061453c61404b670de0b6b3a764000084613f20565b90506000614556856109ce670de0b6b3a764000085613f20565b905060006145648a836146b2565b90506000614572828c61459a565b905060006145808287614e4d565b9050600061458e828c613d77565b9050614505818c613f20565b6000816145d85760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b6044820152606401610945565b60006145ec670de0b6b3a764000085615ccb565b905083158061460b5750670de0b6b3a76400006146098583615ba9565b145b61464a5760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000614657600285615ba9565b6146619083615bbd565b9050818110156146a65760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b6044820152606401610945565b6000613e528583615ba9565b6000806146bf8385615bbd565b905083811015610e905760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b6044820152606401610945565b613fae6001600160a01b0384168330846152d7565b613d74816152fe565b60008061472f868561459a565b9050600061473d86856146b2565b9050600061474b828861459a565b90506000614761670de0b6b3a76400008561459a565b9050600061476f8383614e4d565b9050600061477d828d613d77565b9050600061478b828e613f20565b905060006147a461404b670de0b6b3a76400008a613f20565b905061406b82613ea9670de0b6b3a764000084613f20565b6040516001600160a01b038316602482015260448101829052613fae90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261536d565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061487557614875615d2a565b60200260200101516001819055508560018151811061489657614896615d2a565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061497a87600160200201518860035b602002015161459a565b9050600061499a87613487896109ce670de0b6b3a76400006134876112af565b6001600160a01b0387166000908152600560205260409020549091506149c090826146b2565b60056000886001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614a07886134878a6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038816600090815260066020526040902054909150614a2d90826146b2565b6001600160a01b03881660009081526006602052604081209190915580548790614a556112af565b600154614a629190615bbd565b614a6c9190615bbd565b614a769190615bbd565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614ab58a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614af6670de0b6b3a764000083613f20565b9050614b028a82613d77565b8b51909150600090614b1890613ea981856146b2565b90506000614b268288614e4d565b90506000614b3c670de0b6b3a764000083613f20565b9050614b4f8e6002602002015182613d77565b995089614b608e613487898b615bbd565b99509950505050505050505094509492505050565b60008080614b8c8760036020020151886001614970565b90506000614ba1886002602002015188613f20565b90506000614bb689600260200201518361459a565b90506000614bc48285614e4d565b9050614bd881670de0b6b3a7640000613f20565b90506000805488614be76112af565b600154614bf49190615bbd565b614bfe9190615bbd565b614c089190615bbd565b8b51909150614c2d90614c1b9084613d77565b613ea9670de0b6b3a764000084613f20565b96506000614c4d886134878a6109ce670de0b6b3a76400006134876112af565b6001600160a01b038b16600090815260056020526040902054909150614c7390826146b2565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614cba896134878b6109ce670de0b6b3a7640000600054613f20565b6001600160a01b038c16600090815260066020526040902054909150614ce090826146b2565b6001600160a01b038c166000908152600660205260409020558c51614d1d90614d099086613d77565b613ea9670de0b6b3a7640000600154613f20565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d5c8a6134878c6109ce670de0b6b3a7640000600154613f20565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614da6858861459a565b90506000614db48786613f20565b90506000614dc2888361459a565b90506000614dd08285614e4d565b9050614de481670de0b6b3a7640000613f20565b90506000805487614df36112af565b600154614e009190615bbd565b614e0a9190615bbd565b614e149190615bbd565b9050614e28670de0b6b3a764000082613f20565b9550614e3d614e378d84613d77565b8761459a565b9c9b505050505050505050505050565b60006001831015614e985760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b6044820152606401610945565b6001614ead670de0b6b3a76400006002615ccb565b614eb79190615d85565b831115614eff5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b6044820152606401610945565b6000614f0a8361543f565b90506000614f188483613f20565b90506000614f2e86614f298561545d565b615471565b905081614f3f579250610eec915050565b6000614f628784614f5d6402540be400670de0b6b3a7640000615ba9565b6154e5565b905061137f8282613d77565b600080828410614f8d57614f828385615d85565b600091509150614f9e565b614f978484615d85565b6001915091505b9250929050565b6126cb823083614352565b306000908152600760205260409020548111156150065760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b6044820152606401610945565b306000908152600760205260409020546150209082613f20565b3060009081526007602052604090205560095461503d9082613f20565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126cb308383614352565b670de0b6b3a76400008110156150d05760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b6044820152606401610945565b6150e3670de0b6b3a76400006032615ccb565b8111156151235760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b6044820152606401610945565b61513a64e8d4a51000670de0b6b3a7640000615ba9565b82101561517b5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b6044820152606401610945565b6001600160a01b03831660009081526010602052604090206002015480821115615217576151b46011546151af8484613f20565b6146b2565b6011556151ca670de0b6b3a76400006032615ccb565b60115411156152125760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b6044820152606401610945565b615233565b808210156152335761522f6011546134878385613f20565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561527c5761527785336152728785613f20565b614704565b6152d0565b808410156152d05760006152908286613f20565b9050600061529f826000613d77565b90506152b587336152b08585613f20565b613f9a565b6002546152cd9088906001600160a01b031683613f9a565b50505b5050505050565b6152f8846323b872dd60e01b8585856040516024016147e893929190615c4f565b50505050565b3060009081526007602052604090205461531890826146b2565b3060009081526007602052604090205560095461533590826146b2565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001615071565b60006153c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155d59092919063ffffffff16565b805190915015613fae57808060200190518101906153e09190615c73565b613fae5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610945565b6000670de0b6b3a76400006154538361545d565b610eec9190615ccb565b6000610eec670de0b6b3a764000083615ba9565b60008281615480600285615db2565b61549257670de0b6b3a7640000615494565b815b90506154a1600285615ba9565b93505b8315611523576154b48283613d77565b91506154c1600285615db2565b156154d3576154d08183613d77565b90505b6154de600285615ba9565b93506154a4565b60008281806154fc87670de0b6b3a7640000614f6e565b9092509050670de0b6b3a764000080600060015b8884106155c657600061552b670de0b6b3a764000083615ccb565b905060008061554b8a61554685670de0b6b3a7640000613f20565b614f6e565b9150915061555d876109ce848c613d77565b9650615569878461459a565b965086615578575050506155c6565b8715615582579315935b801561558c579315935b84156155a35761559c8688613f20565b95506155b0565b6155ad86886146b2565b95505b50505080806155be90615d40565b915050615510565b50909998505050505050505050565b6060611523848460008585843b61562e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610945565b600080866001600160a01b0316858760405161564a9190615dc6565b60006040518083038185875af1925050503d8060008114615687576040519150601f19603f3d011682016040523d82523d6000602084013e61568c565b606091505b509150915061137f828286606083156156a6575081610e90565b8251156156b65782518084602001fd5b8160405162461bcd60e51b81526004016109459190615746565b80356001600160a01b038116811461277d57600080fd5b6000806000606084860312156156fc57600080fd5b615705846156d0565b95602085013595506040909401359392505050565b60005b8381101561573557818101518382015260200161571d565b838111156152f85750506000910152565b602081526000825180602084015261576581604085016020870161571a565b601f01601f19169190910160400192915050565b60008060006060848603121561578e57600080fd5b615797846156d0565b92506157a5602085016156d0565b9150604084013590509250925092565b600080604083850312156157c857600080fd5b6157d1836156d0565b946020939093013593505050565b60008060008060008060c087890312156157f857600080fd5b615801876156d0565b9550602087013594506040870135935061581d606088016156d0565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561584d57600080fd5b615856856156d0565b9350615864602086016156d0565b93969395505050506040820135916060013590565b60006020828403121561588b57600080fd5b610e90826156d0565b6000602082840312156158a657600080fd5b5035919050565b60008083601f8401126158bf57600080fd5b50813567ffffffffffffffff8111156158d757600080fd5b6020830191508360208260051b8501011115614f9e57600080fd5b60008060006040848603121561590757600080fd5b83359250602084013567ffffffffffffffff81111561592557600080fd5b615931868287016158ad565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159775781516001600160a01b031687529582019590820190600101615952565b509495945050505050565b602081526000610e90602083018461593e565b6040815260006159a8604083018561593e565b82810360208481019190915284518083528582019282019060005b818110156159df578451835293830193918301916001016159c3565b5090979650505050505050565b8015158114613d7457600080fd5b8060408101831015610eec57600080fd5b600080600080600080600080610120898b031215615a2857600080fd5b615a31896156d0565b9750615a3f60208a016156d0565b9650604089013567ffffffffffffffff811115615a5b57600080fd5b615a678b828c016158ad565b9097509550506060890135615a7b816159ec565b93506080890135615a8b816159ec565b9250615a9a8a60a08b016159fa565b9150615aa98a60e08b016159fa565b90509295985092959890939650565b60008060e08385031215615acb57600080fd5b6060830184811115615adc57600080fd5b8392508460e085011115615aef57600080fd5b809150509250929050565b60008060408385031215615b0d57600080fd5b615b16836156d0565b9150615b24602084016156d0565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615bb857615bb8615b7d565b500490565b60008219821115615bd057615bd0615b93565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c8557600080fd5b8151610e90816159ec565b600181811c90821680615ca457607f821691505b60208210811415615cc557634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ce557615ce5615b93565b500290565b600060208284031215615cfc57600080fd5b5051919050565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d5457615d54615b93565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600082821015615d9757615d97615b93565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dc157615dc1615b7d565b500690565b60008251615dd881846020870161571a565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220dd27ead8c9c3c0bb206313d54c68f9281b11dfee1171b5653a1419897a2c772764736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/abis/BToken.json b/abis/BToken.json index ff8b3d4..64bc9f3 100644 --- a/abis/BToken.json +++ b/abis/BToken.json @@ -482,8 +482,8 @@ "type": "function" } ], - "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600391906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d916004916200008f565b506005805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b610bf480620001826000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063bc694ea211610097578063d73dd62311610071578063d73dd623146102eb578063dd62ed3e146102fe578063e4a28a52146101ef578063ec0930211461033757600080fd5b8063bc694ea2146102db578063c36596a614610215578063c6580d12146102e357600080fd5b8063b0e0d136116100d3578063b0e0d136146102c3578063b7b800a4146102c3578063ba019dab146102cb578063bc063e1a146102d357600080fd5b806395d89b41146102a0578063992e2a92146102a8578063a9059cbb146102b057600080fd5b806323b872dd1161016657806370a082311161014057806370a082311461025f57806376c7a3c714610288578063867378c5146102905780639381cd2b1461029857600080fd5b806323b872dd14610224578063313ce56714610237578063661884631461024c57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806309a3bbe4146101ef57806318160ddd14610205578063189d00ca1461020d578063218b538214610215575b600080fd5b6101b661033f565b6040516101c391906109b8565b60405180910390f35b6101df6101da366004610a29565b6103d1565b60405190151581526020016101c3565b6101f761042b565b6040519081526020016101c3565b6002546101f7565b6101f7610441565b6101f7670de0b6b3a764000081565b6101df610232366004610a53565b610458565b60055460405160ff90911681526020016101c3565b6101df61025a366004610a29565b6105b1565b6101f761026d366004610a8f565b6001600160a01b031660009081526020819052604090205490565b6101f7610687565b6101f761069c565b6101f76106b3565b6101b66106c6565b6101f76106d5565b6101df6102be366004610a29565b6106f3565b6101f7600281565b6101f7600181565b6101f7610709565b6101f761071c565b6101f7600081565b6101df6102f9366004610a29565b61073b565b6101f761030c366004610aaa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f76107ae565b60606003805461034e90610add565b80601f016020809104026020016040519081016040528092919081815260200182805461037a90610add565b80156103c75780601f1061039c576101008083540402835291602001916103c7565b820191906000526020600020905b8154815290600101906020018083116103aa57829003601f168201915b5050505050905090565b3360008181526001602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020610b9f8339815191529061041a9086815260200190565b60405180910390a350600192915050565b61043e670de0b6b3a76400006032610b2e565b81565b61043e6402540be400670de0b6b3a7640000610b4d565b6000336001600160a01b038516148061049457506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b6104dd5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b60448201526064015b60405180910390fd5b6104e88484846107c1565b336001600160a01b0385161480159061052657506001600160a01b038416600090815260016020908152604080832033845290915290205460001914155b156105a7576001600160a01b038416600090815260016020908152604080832033845290915290205461055990836108cb565b6001600160a01b038581166000908152600160209081526040808320338085529083529281902085905551938452918616929091600080516020610b9f833981519152910160405180910390a35b5060019392505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205480831115610606573360009081526001602090815260408083206001600160a01b0388168452909152812055610635565b61061081846108cb565b3360009081526001602090815260408083206001600160a01b03891684529091529020555b3360008181526001602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020610b9f833981519152910160405180910390a35060019392505050565b61043e620f4240670de0b6b3a7640000610b4d565b61043e64e8d4a51000670de0b6b3a7640000610b4d565b61043e670de0b6b3a76400006064610b2e565b60606004805461034e90610add565b6106e86003670de0b6b3a7640000610b4d565b61043e906001610b6f565b60006107003384846107c1565b50600192915050565b61043e600a670de0b6b3a7640000610b4d565b6001610731670de0b6b3a76400006002610b2e565b61043e9190610b87565b3360009081526001602090815260408083206001600160a01b03861684529091528120546107699083610928565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020610b9f833981519152910161041a565b61043e6002670de0b6b3a7640000610b4d565b6001600160a01b0383166000908152602081905260409020548111156108205760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016104d4565b6001600160a01b03831660009081526020819052604090205461084390826108cb565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546108729082610928565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60008060006108da8585610981565b9150915080156109205760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b60448201526064016104d4565b509392505050565b6000806109358385610b6f565b90508381101561097a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b60448201526064016104d4565b9392505050565b6000808284106109a0576109958385610b87565b6000915091506109b1565b6109aa8484610b87565b6001915091505b9250929050565b600060208083528351808285015260005b818110156109e5578581018301518582016040015282016109c9565b818111156109f7576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a2457600080fd5b919050565b60008060408385031215610a3c57600080fd5b610a4583610a0d565b946020939093013593505050565b600080600060608486031215610a6857600080fd5b610a7184610a0d565b9250610a7f60208501610a0d565b9150604084013590509250925092565b600060208284031215610aa157600080fd5b61097a82610a0d565b60008060408385031215610abd57600080fd5b610ac683610a0d565b9150610ad460208401610a0d565b90509250929050565b600181811c90821680610af157607f821691505b60208210811415610b1257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610b4857610b48610b18565b500290565b600082610b6a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610b8257610b82610b18565b500190565b600082821015610b9957610b99610b18565b50039056fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122041ff4e5792568228c9a659d28738fb75ea2da505335d21306fba6d9b736fd72964736f6c634300080a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063bc694ea211610097578063d73dd62311610071578063d73dd623146102eb578063dd62ed3e146102fe578063e4a28a52146101ef578063ec0930211461033757600080fd5b8063bc694ea2146102db578063c36596a614610215578063c6580d12146102e357600080fd5b8063b0e0d136116100d3578063b0e0d136146102c3578063b7b800a4146102c3578063ba019dab146102cb578063bc063e1a146102d357600080fd5b806395d89b41146102a0578063992e2a92146102a8578063a9059cbb146102b057600080fd5b806323b872dd1161016657806370a082311161014057806370a082311461025f57806376c7a3c714610288578063867378c5146102905780639381cd2b1461029857600080fd5b806323b872dd14610224578063313ce56714610237578063661884631461024c57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806309a3bbe4146101ef57806318160ddd14610205578063189d00ca1461020d578063218b538214610215575b600080fd5b6101b661033f565b6040516101c391906109b8565b60405180910390f35b6101df6101da366004610a29565b6103d1565b60405190151581526020016101c3565b6101f761042b565b6040519081526020016101c3565b6002546101f7565b6101f7610441565b6101f7670de0b6b3a764000081565b6101df610232366004610a53565b610458565b60055460405160ff90911681526020016101c3565b6101df61025a366004610a29565b6105b1565b6101f761026d366004610a8f565b6001600160a01b031660009081526020819052604090205490565b6101f7610687565b6101f761069c565b6101f76106b3565b6101b66106c6565b6101f76106d5565b6101df6102be366004610a29565b6106f3565b6101f7600281565b6101f7600181565b6101f7610709565b6101f761071c565b6101f7600081565b6101df6102f9366004610a29565b61073b565b6101f761030c366004610aaa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f76107ae565b60606003805461034e90610add565b80601f016020809104026020016040519081016040528092919081815260200182805461037a90610add565b80156103c75780601f1061039c576101008083540402835291602001916103c7565b820191906000526020600020905b8154815290600101906020018083116103aa57829003601f168201915b5050505050905090565b3360008181526001602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020610b9f8339815191529061041a9086815260200190565b60405180910390a350600192915050565b61043e670de0b6b3a76400006032610b2e565b81565b61043e6402540be400670de0b6b3a7640000610b4d565b6000336001600160a01b038516148061049457506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b6104dd5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b60448201526064015b60405180910390fd5b6104e88484846107c1565b336001600160a01b0385161480159061052657506001600160a01b038416600090815260016020908152604080832033845290915290205460001914155b156105a7576001600160a01b038416600090815260016020908152604080832033845290915290205461055990836108cb565b6001600160a01b038581166000908152600160209081526040808320338085529083529281902085905551938452918616929091600080516020610b9f833981519152910160405180910390a35b5060019392505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205480831115610606573360009081526001602090815260408083206001600160a01b0388168452909152812055610635565b61061081846108cb565b3360009081526001602090815260408083206001600160a01b03891684529091529020555b3360008181526001602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020610b9f833981519152910160405180910390a35060019392505050565b61043e620f4240670de0b6b3a7640000610b4d565b61043e64e8d4a51000670de0b6b3a7640000610b4d565b61043e670de0b6b3a76400006064610b2e565b60606004805461034e90610add565b6106e86003670de0b6b3a7640000610b4d565b61043e906001610b6f565b60006107003384846107c1565b50600192915050565b61043e600a670de0b6b3a7640000610b4d565b6001610731670de0b6b3a76400006002610b2e565b61043e9190610b87565b3360009081526001602090815260408083206001600160a01b03861684529091528120546107699083610928565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020610b9f833981519152910161041a565b61043e6002670de0b6b3a7640000610b4d565b6001600160a01b0383166000908152602081905260409020548111156108205760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016104d4565b6001600160a01b03831660009081526020819052604090205461084390826108cb565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546108729082610928565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60008060006108da8585610981565b9150915080156109205760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b60448201526064016104d4565b509392505050565b6000806109358385610b6f565b90508381101561097a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b60448201526064016104d4565b9392505050565b6000808284106109a0576109958385610b87565b6000915091506109b1565b6109aa8484610b87565b6001915091505b9250929050565b600060208083528351808285015260005b818110156109e5578581018301518582016040015282016109c9565b818111156109f7576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a2457600080fd5b919050565b60008060408385031215610a3c57600080fd5b610a4583610a0d565b946020939093013593505050565b600080600060608486031215610a6857600080fd5b610a7184610a0d565b9250610a7f60208501610a0d565b9150604084013590509250925092565b600060208284031215610aa157600080fd5b61097a82610a0d565b60008060408385031215610abd57600080fd5b610ac683610a0d565b9150610ad460208401610a0d565b90509250929050565b600181811c90821680610af157607f821691505b60208210811415610b1257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610b4857610b48610b18565b500290565b600082610b6a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610b8257610b82610b18565b500190565b600082821015610b9957610b99610b18565b50039056fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122041ff4e5792568228c9a659d28738fb75ea2da505335d21306fba6d9b736fd72964736f6c634300080a0033", + "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600391906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d916004916200008f565b506005805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b610bf480620001826000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063bc694ea211610097578063d73dd62311610071578063d73dd623146102eb578063dd62ed3e146102fe578063e4a28a52146101ef578063ec0930211461033757600080fd5b8063bc694ea2146102db578063c36596a614610215578063c6580d12146102e357600080fd5b8063b0e0d136116100d3578063b0e0d136146102c3578063b7b800a4146102c3578063ba019dab146102cb578063bc063e1a146102d357600080fd5b806395d89b41146102a0578063992e2a92146102a8578063a9059cbb146102b057600080fd5b806323b872dd1161016657806370a082311161014057806370a082311461025f57806376c7a3c714610288578063867378c5146102905780639381cd2b1461029857600080fd5b806323b872dd14610224578063313ce56714610237578063661884631461024c57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806309a3bbe4146101ef57806318160ddd14610205578063189d00ca1461020d578063218b538214610215575b600080fd5b6101b661033f565b6040516101c391906109b8565b60405180910390f35b6101df6101da366004610a29565b6103d1565b60405190151581526020016101c3565b6101f761042b565b6040519081526020016101c3565b6002546101f7565b6101f7610441565b6101f7670de0b6b3a764000081565b6101df610232366004610a53565b610458565b60055460405160ff90911681526020016101c3565b6101df61025a366004610a29565b6105b1565b6101f761026d366004610a8f565b6001600160a01b031660009081526020819052604090205490565b6101f7610687565b6101f761069c565b6101f76106b3565b6101b66106c6565b6101f76106d5565b6101df6102be366004610a29565b6106f3565b6101f7600281565b6101f7600181565b6101f7610709565b6101f761071c565b6101f7600081565b6101df6102f9366004610a29565b61073b565b6101f761030c366004610aaa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f76107ae565b60606003805461034e90610add565b80601f016020809104026020016040519081016040528092919081815260200182805461037a90610add565b80156103c75780601f1061039c576101008083540402835291602001916103c7565b820191906000526020600020905b8154815290600101906020018083116103aa57829003601f168201915b5050505050905090565b3360008181526001602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020610b9f8339815191529061041a9086815260200190565b60405180910390a350600192915050565b61043e670de0b6b3a76400006032610b2e565b81565b61043e6402540be400670de0b6b3a7640000610b4d565b6000336001600160a01b038516148061049457506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b6104dd5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b60448201526064015b60405180910390fd5b6104e88484846107c1565b336001600160a01b0385161480159061052657506001600160a01b038416600090815260016020908152604080832033845290915290205460001914155b156105a7576001600160a01b038416600090815260016020908152604080832033845290915290205461055990836108cb565b6001600160a01b038581166000908152600160209081526040808320338085529083529281902085905551938452918616929091600080516020610b9f833981519152910160405180910390a35b5060019392505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205480831115610606573360009081526001602090815260408083206001600160a01b0388168452909152812055610635565b61061081846108cb565b3360009081526001602090815260408083206001600160a01b03891684529091529020555b3360008181526001602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020610b9f833981519152910160405180910390a35060019392505050565b61043e620f4240670de0b6b3a7640000610b4d565b61043e64e8d4a51000670de0b6b3a7640000610b4d565b61043e670de0b6b3a76400006064610b2e565b60606004805461034e90610add565b6106e86003670de0b6b3a7640000610b4d565b61043e906001610b6f565b60006107003384846107c1565b50600192915050565b61043e600a670de0b6b3a7640000610b4d565b6001610731670de0b6b3a76400006002610b2e565b61043e9190610b87565b3360009081526001602090815260408083206001600160a01b03861684529091528120546107699083610928565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020610b9f833981519152910161041a565b61043e6002670de0b6b3a7640000610b4d565b6001600160a01b0383166000908152602081905260409020548111156108205760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016104d4565b6001600160a01b03831660009081526020819052604090205461084390826108cb565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546108729082610928565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60008060006108da8585610981565b9150915080156109205760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b60448201526064016104d4565b509392505050565b6000806109358385610b6f565b90508381101561097a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b60448201526064016104d4565b9392505050565b6000808284106109a0576109958385610b87565b6000915091506109b1565b6109aa8484610b87565b6001915091505b9250929050565b600060208083528351808285015260005b818110156109e5578581018301518582016040015282016109c9565b818111156109f7576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a2457600080fd5b919050565b60008060408385031215610a3c57600080fd5b610a4583610a0d565b946020939093013593505050565b600080600060608486031215610a6857600080fd5b610a7184610a0d565b9250610a7f60208501610a0d565b9150604084013590509250925092565b600060208284031215610aa157600080fd5b61097a82610a0d565b60008060408385031215610abd57600080fd5b610ac683610a0d565b9150610ad460208401610a0d565b90509250929050565b600181811c90821680610af157607f821691505b60208210811415610b1257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610b4857610b48610b18565b500290565b600082610b6a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610b8257610b82610b18565b500190565b600082821015610b9957610b99610b18565b50039056fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122063870954821c8d23cac72269222519091fd3326178699a9348b1f0e25593376c64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063bc694ea211610097578063d73dd62311610071578063d73dd623146102eb578063dd62ed3e146102fe578063e4a28a52146101ef578063ec0930211461033757600080fd5b8063bc694ea2146102db578063c36596a614610215578063c6580d12146102e357600080fd5b8063b0e0d136116100d3578063b0e0d136146102c3578063b7b800a4146102c3578063ba019dab146102cb578063bc063e1a146102d357600080fd5b806395d89b41146102a0578063992e2a92146102a8578063a9059cbb146102b057600080fd5b806323b872dd1161016657806370a082311161014057806370a082311461025f57806376c7a3c714610288578063867378c5146102905780639381cd2b1461029857600080fd5b806323b872dd14610224578063313ce56714610237578063661884631461024c57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806309a3bbe4146101ef57806318160ddd14610205578063189d00ca1461020d578063218b538214610215575b600080fd5b6101b661033f565b6040516101c391906109b8565b60405180910390f35b6101df6101da366004610a29565b6103d1565b60405190151581526020016101c3565b6101f761042b565b6040519081526020016101c3565b6002546101f7565b6101f7610441565b6101f7670de0b6b3a764000081565b6101df610232366004610a53565b610458565b60055460405160ff90911681526020016101c3565b6101df61025a366004610a29565b6105b1565b6101f761026d366004610a8f565b6001600160a01b031660009081526020819052604090205490565b6101f7610687565b6101f761069c565b6101f76106b3565b6101b66106c6565b6101f76106d5565b6101df6102be366004610a29565b6106f3565b6101f7600281565b6101f7600181565b6101f7610709565b6101f761071c565b6101f7600081565b6101df6102f9366004610a29565b61073b565b6101f761030c366004610aaa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f76107ae565b60606003805461034e90610add565b80601f016020809104026020016040519081016040528092919081815260200182805461037a90610add565b80156103c75780601f1061039c576101008083540402835291602001916103c7565b820191906000526020600020905b8154815290600101906020018083116103aa57829003601f168201915b5050505050905090565b3360008181526001602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020610b9f8339815191529061041a9086815260200190565b60405180910390a350600192915050565b61043e670de0b6b3a76400006032610b2e565b81565b61043e6402540be400670de0b6b3a7640000610b4d565b6000336001600160a01b038516148061049457506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b6104dd5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b60448201526064015b60405180910390fd5b6104e88484846107c1565b336001600160a01b0385161480159061052657506001600160a01b038416600090815260016020908152604080832033845290915290205460001914155b156105a7576001600160a01b038416600090815260016020908152604080832033845290915290205461055990836108cb565b6001600160a01b038581166000908152600160209081526040808320338085529083529281902085905551938452918616929091600080516020610b9f833981519152910160405180910390a35b5060019392505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205480831115610606573360009081526001602090815260408083206001600160a01b0388168452909152812055610635565b61061081846108cb565b3360009081526001602090815260408083206001600160a01b03891684529091529020555b3360008181526001602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020610b9f833981519152910160405180910390a35060019392505050565b61043e620f4240670de0b6b3a7640000610b4d565b61043e64e8d4a51000670de0b6b3a7640000610b4d565b61043e670de0b6b3a76400006064610b2e565b60606004805461034e90610add565b6106e86003670de0b6b3a7640000610b4d565b61043e906001610b6f565b60006107003384846107c1565b50600192915050565b61043e600a670de0b6b3a7640000610b4d565b6001610731670de0b6b3a76400006002610b2e565b61043e9190610b87565b3360009081526001602090815260408083206001600160a01b03861684529091528120546107699083610928565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020610b9f833981519152910161041a565b61043e6002670de0b6b3a7640000610b4d565b6001600160a01b0383166000908152602081905260409020548111156108205760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016104d4565b6001600160a01b03831660009081526020819052604090205461084390826108cb565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546108729082610928565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60008060006108da8585610981565b9150915080156109205760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b60448201526064016104d4565b509392505050565b6000806109358385610b6f565b90508381101561097a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b60448201526064016104d4565b9392505050565b6000808284106109a0576109958385610b87565b6000915091506109b1565b6109aa8484610b87565b6001915091505b9250929050565b600060208083528351808285015260005b818110156109e5578581018301518582016040015282016109c9565b818111156109f7576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a2457600080fd5b919050565b60008060408385031215610a3c57600080fd5b610a4583610a0d565b946020939093013593505050565b600080600060608486031215610a6857600080fd5b610a7184610a0d565b9250610a7f60208501610a0d565b9150604084013590509250925092565b600060208284031215610aa157600080fd5b61097a82610a0d565b60008060408385031215610abd57600080fd5b610ac683610a0d565b9150610ad460208401610a0d565b90509250929050565b600181811c90821680610af157607f821691505b60208210811415610b1257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610b4857610b48610b18565b500290565b600082610b6a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610b8257610b82610b18565b500190565b600082821015610b9957610b99610b18565b50039056fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122063870954821c8d23cac72269222519091fd3326178699a9348b1f0e25593376c64736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/abis/Dispenser.json b/abis/Dispenser.json index d4aac80..44fcf1d 100644 --- a/abis/Dispenser.json +++ b/abis/Dispenser.json @@ -257,6 +257,19 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [ { @@ -351,8 +364,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161160938038061160983398101604081905261002f916100b3565b60016000556001600160a01b03811661008e5760405162461bcd60e51b815260206004820152601f60248201527f44697370656e7365723a2057726f6e6720526f75746572206164647265737300604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100e3565b6000602082840312156100c557600080fd5b81516001600160a01b03811681146100dc57600080fd5b9392505050565b611517806100f26000396000f3fe6080604052600436106100865760003560e01c806345d6646b1161005957806345d6646b1461011d578063645b8b1b1461013d578063938d71d0146101a0578063f887ea40146101c0578063f9bfaa7d146101e057600080fd5b80631d746d831461008b57806324ce2917146100a05780633398086a146100c05780633ea053eb146100fd575b600080fd5b61009e61009936600461129e565b610200565b005b3480156100ac57600080fd5b5061009e6100bb3660046112da565b61077e565b3480156100cc57600080fd5b506100e06100db366004611331565b6109b1565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010957600080fd5b5061009e61011836600461134a565b6109db565b34801561012957600080fd5b5061009e610138366004611365565b610ab8565b34801561014957600080fd5b5061015d61015836600461134a565b610ba6565b6040805197151588526001600160a01b039687166020890152941515948701949094526060860192909252608085015260a08401521660c082015260e0016100f4565b3480156101ac57600080fd5b5061009e6101bb366004611398565b610d0f565b3480156101cc57600080fd5b506001546100e0906001600160a01b031681565b3480156101ec57600080fd5b5061009e6101fb36600461134a565b610e2f565b600260005414156102585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556001600160a01b0383166102835760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03831660009081526002602052604090205460ff166102e25760405162461bcd60e51b815260206004820152601460248201527344697370656e736572206e6f742061637469766560601b604482015260640161024f565b600082116103285760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081e995c9bc8185b5bdd5b9d606a1b604482015260640161024f565b6001600160a01b0383166000908152600260205260409020600101548211156103855760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b604482015260640161024f565b6001600160a01b038381166000908152600260205260409020600301541615610426576001600160a01b038381166000908152600260205260409020600301541633146104265760405162461bcd60e51b815260206004820152602960248201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f2072604482015268195c5d595cdd08111560ba1b606482015260840161024f565b6040516370a0823160e01b81526001600160a01b03828116600483015284916000918316906370a0823190602401602060405180830381865afa158015610471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104959190611402565b6001600160a01b0386166000908152600260208190526040909120015490915081106105035760405162461bcd60e51b815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f2068696768000000000000000000604482015260640161024f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190611402565b905084811080156105e257506040516355138f0d60e11b81523060048201526001600160a01b0384169063aa271e1a90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e2919061141b565b156106ca576001600160a01b0383166340c10f1930610601848961143d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c79190611402565b90505b848110156107105760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820726573657276657360681b604482015260640161024f565b6107246001600160a01b0387168587610fdf565b836001600160a01b0316866001600160a01b03167f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135438760405161076991815260200190565b60405180910390a35050600160005550505050565b6001546001600160a01b031633146107d15760405162461bcd60e51b81526020600482015260166024820152752234b9b832b739b2b91d1037b7363c903937baba32b960511b604482015260640161024f565b6001600160a01b0385166107f75760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03858116600090815260026020526040902054610100900416158061084457506001600160a01b0385811660009081526002602052604090205461010090048116908316145b6108905760405162461bcd60e51b815260206004820152601960248201527f44617461546f6b656e20616c7265616479206372656174656400000000000000604482015260640161024f565b6001600160a01b038581166000818152600260208181526040808420805489881661010081026001600160a81b031990921691909117600190811783558083018d90559482018b905560039182018054988a166001600160a01b0319998a16811790915582549586018355919095527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180549096168517909555845189815290810188905293840152917f7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c99060600160405180910390a3806001600160a01b0316856001600160a01b03167fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca560405160405180910390a35050505050565b600381815481106109c157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116610a015760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610a6f5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b89190a250565b6001600160a01b038216610ade5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038281166000908152600260205260409020546101009004163314610b4c5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b0382811660008181526002602052604080822060030180546001600160a01b0319169486169485179055517fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca59190a35050565b60008080808080806001600160a01b038816610bd45760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b0388811660008181526002602081905260409182902080546001820154919092015492516370a0823160e01b815230600482015260ff83169c506101009092049094169950929650945089916370a0823190602401602060405180830381865afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c719190611402565b6040516355138f0d60e11b81523060048201529093506001600160a01b0382169063aa271e1a90602401602060405180830381865afa158015610cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdc919061141b565b6001600160a01b03998a16600090815260026020526040902060030154989a979990989597949650929490921692915050565b6001600160a01b038316610d355760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038381166000908152600260205260409020546101009004163314610d935760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6001600160a01b0383166000818152600260208190526040808320805460ff191660019081178255818101889055920185905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b03191684179055517fe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a87459190a2505050565b60026000541415610e825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161024f565b60026000556001600160a01b038116610ead5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610f0b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190611402565b90508015610fd557610f946001600160a01b0384163383610fdf565b60405181815233906001600160a01b038516907f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9060200160405180910390a35b5050600160005550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611031908490611036565b505050565b600061108b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111089092919063ffffffff16565b80519091501561103157808060200190518101906110a9919061141b565b6110315760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161024f565b60606111178484600085611121565b90505b9392505050565b6060824710156111825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161024f565b843b6111d05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161024f565b600080866001600160a01b031685876040516111ec9190611492565b60006040518083038185875af1925050503d8060008114611229576040519150601f19603f3d011682016040523d82523d6000602084013e61122e565b606091505b509150915061123e828286611249565b979650505050505050565b6060831561125857508161111a565b8251156112685782518084602001fd5b8160405162461bcd60e51b815260040161024f91906114ae565b80356001600160a01b038116811461129957600080fd5b919050565b6000806000606084860312156112b357600080fd5b6112bc84611282565b9250602084013591506112d160408501611282565b90509250925092565b600080600080600060a086880312156112f257600080fd5b6112fb86611282565b9450602086013593506040860135925061131760608701611282565b915061132560808701611282565b90509295509295909350565b60006020828403121561134357600080fd5b5035919050565b60006020828403121561135c57600080fd5b61111a82611282565b6000806040838503121561137857600080fd5b61138183611282565b915061138f60208401611282565b90509250929050565b6000806000606084860312156113ad57600080fd5b6113b684611282565b95602085013595506040909401359392505050565b6020808252601e908201527f496e76616c696420746f6b656e20636f6e747261637420616464726573730000604082015260600190565b60006020828403121561141457600080fd5b5051919050565b60006020828403121561142d57600080fd5b8151801515811461111a57600080fd5b60008282101561145d57634e487b7160e01b600052601160045260246000fd5b500390565b60005b8381101561147d578181015183820152602001611465565b8381111561148c576000848401525b50505050565b600082516114a4818460208701611462565b9190910192915050565b60208152600082518060208401526114cd816040850160208701611462565b601f01601f1916919091016040019291505056fea2646970667358221220fb4b6a3a8a2f8ea9e99a8ff393a1aacd46b89c5c97ff6c190118e2b1d031179664736f6c634300080a0033", - "deployedBytecode": "0x6080604052600436106100865760003560e01c806345d6646b1161005957806345d6646b1461011d578063645b8b1b1461013d578063938d71d0146101a0578063f887ea40146101c0578063f9bfaa7d146101e057600080fd5b80631d746d831461008b57806324ce2917146100a05780633398086a146100c05780633ea053eb146100fd575b600080fd5b61009e61009936600461129e565b610200565b005b3480156100ac57600080fd5b5061009e6100bb3660046112da565b61077e565b3480156100cc57600080fd5b506100e06100db366004611331565b6109b1565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010957600080fd5b5061009e61011836600461134a565b6109db565b34801561012957600080fd5b5061009e610138366004611365565b610ab8565b34801561014957600080fd5b5061015d61015836600461134a565b610ba6565b6040805197151588526001600160a01b039687166020890152941515948701949094526060860192909252608085015260a08401521660c082015260e0016100f4565b3480156101ac57600080fd5b5061009e6101bb366004611398565b610d0f565b3480156101cc57600080fd5b506001546100e0906001600160a01b031681565b3480156101ec57600080fd5b5061009e6101fb36600461134a565b610e2f565b600260005414156102585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556001600160a01b0383166102835760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03831660009081526002602052604090205460ff166102e25760405162461bcd60e51b815260206004820152601460248201527344697370656e736572206e6f742061637469766560601b604482015260640161024f565b600082116103285760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081e995c9bc8185b5bdd5b9d606a1b604482015260640161024f565b6001600160a01b0383166000908152600260205260409020600101548211156103855760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b604482015260640161024f565b6001600160a01b038381166000908152600260205260409020600301541615610426576001600160a01b038381166000908152600260205260409020600301541633146104265760405162461bcd60e51b815260206004820152602960248201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f2072604482015268195c5d595cdd08111560ba1b606482015260840161024f565b6040516370a0823160e01b81526001600160a01b03828116600483015284916000918316906370a0823190602401602060405180830381865afa158015610471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104959190611402565b6001600160a01b0386166000908152600260208190526040909120015490915081106105035760405162461bcd60e51b815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f2068696768000000000000000000604482015260640161024f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190611402565b905084811080156105e257506040516355138f0d60e11b81523060048201526001600160a01b0384169063aa271e1a90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e2919061141b565b156106ca576001600160a01b0383166340c10f1930610601848961143d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c79190611402565b90505b848110156107105760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820726573657276657360681b604482015260640161024f565b6107246001600160a01b0387168587610fdf565b836001600160a01b0316866001600160a01b03167f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135438760405161076991815260200190565b60405180910390a35050600160005550505050565b6001546001600160a01b031633146107d15760405162461bcd60e51b81526020600482015260166024820152752234b9b832b739b2b91d1037b7363c903937baba32b960511b604482015260640161024f565b6001600160a01b0385166107f75760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03858116600090815260026020526040902054610100900416158061084457506001600160a01b0385811660009081526002602052604090205461010090048116908316145b6108905760405162461bcd60e51b815260206004820152601960248201527f44617461546f6b656e20616c7265616479206372656174656400000000000000604482015260640161024f565b6001600160a01b038581166000818152600260208181526040808420805489881661010081026001600160a81b031990921691909117600190811783558083018d90559482018b905560039182018054988a166001600160a01b0319998a16811790915582549586018355919095527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180549096168517909555845189815290810188905293840152917f7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c99060600160405180910390a3806001600160a01b0316856001600160a01b03167fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca560405160405180910390a35050505050565b600381815481106109c157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116610a015760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610a6f5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b89190a250565b6001600160a01b038216610ade5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038281166000908152600260205260409020546101009004163314610b4c5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b0382811660008181526002602052604080822060030180546001600160a01b0319169486169485179055517fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca59190a35050565b60008080808080806001600160a01b038816610bd45760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b0388811660008181526002602081905260409182902080546001820154919092015492516370a0823160e01b815230600482015260ff83169c506101009092049094169950929650945089916370a0823190602401602060405180830381865afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c719190611402565b6040516355138f0d60e11b81523060048201529093506001600160a01b0382169063aa271e1a90602401602060405180830381865afa158015610cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdc919061141b565b6001600160a01b03998a16600090815260026020526040902060030154989a979990989597949650929490921692915050565b6001600160a01b038316610d355760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038381166000908152600260205260409020546101009004163314610d935760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6001600160a01b0383166000818152600260208190526040808320805460ff191660019081178255818101889055920185905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b03191684179055517fe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a87459190a2505050565b60026000541415610e825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161024f565b60026000556001600160a01b038116610ead5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610f0b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190611402565b90508015610fd557610f946001600160a01b0384163383610fdf565b60405181815233906001600160a01b038516907f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9060200160405180910390a35b5050600160005550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611031908490611036565b505050565b600061108b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111089092919063ffffffff16565b80519091501561103157808060200190518101906110a9919061141b565b6110315760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161024f565b60606111178484600085611121565b90505b9392505050565b6060824710156111825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161024f565b843b6111d05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161024f565b600080866001600160a01b031685876040516111ec9190611492565b60006040518083038185875af1925050503d8060008114611229576040519150601f19603f3d011682016040523d82523d6000602084013e61122e565b606091505b509150915061123e828286611249565b979650505050505050565b6060831561125857508161111a565b8251156112685782518084602001fd5b8160405162461bcd60e51b815260040161024f91906114ae565b80356001600160a01b038116811461129957600080fd5b919050565b6000806000606084860312156112b357600080fd5b6112bc84611282565b9250602084013591506112d160408501611282565b90509250925092565b600080600080600060a086880312156112f257600080fd5b6112fb86611282565b9450602086013593506040860135925061131760608701611282565b915061132560808701611282565b90509295509295909350565b60006020828403121561134357600080fd5b5035919050565b60006020828403121561135c57600080fd5b61111a82611282565b6000806040838503121561137857600080fd5b61138183611282565b915061138f60208401611282565b90509250929050565b6000806000606084860312156113ad57600080fd5b6113b684611282565b95602085013595506040909401359392505050565b6020808252601e908201527f496e76616c696420746f6b656e20636f6e747261637420616464726573730000604082015260600190565b60006020828403121561141457600080fd5b5051919050565b60006020828403121561142d57600080fd5b8151801515811461111a57600080fd5b60008282101561145d57634e487b7160e01b600052601160045260246000fd5b500390565b60005b8381101561147d578181015183820152602001611465565b8381111561148c576000848401525b50505050565b600082516114a4818460208701611462565b9190910192915050565b60208152600082518060208401526114cd816040850160208701611462565b601f01601f1916919091016040019291505056fea2646970667358221220fb4b6a3a8a2f8ea9e99a8ff393a1aacd46b89c5c97ff6c190118e2b1d031179664736f6c634300080a0033", + "bytecode": "0x608060405234801561001057600080fd5b5060405161163038038061163083398101604081905261002f916100b3565b60016000556001600160a01b03811661008e5760405162461bcd60e51b815260206004820152601f60248201527f44697370656e7365723a2057726f6e6720526f75746572206164647265737300604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100e3565b6000602082840312156100c557600080fd5b81516001600160a01b03811681146100dc57600080fd5b9392505050565b61153e806100f26000396000f3fe6080604052600436106100915760003560e01c80635d1ca631116100595780635d1ca63114610148578063645b8b1b14610164578063938d71d0146101c7578063f887ea40146101e7578063f9bfaa7d1461020757600080fd5b80631d746d831461009657806324ce2917146100ab5780633398086a146100cb5780633ea053eb1461010857806345d6646b14610128575b600080fd5b6100a96100a43660046112c5565b610227565b005b3480156100b757600080fd5b506100a96100c6366004611301565b6107a5565b3480156100d757600080fd5b506100eb6100e6366004611358565b6109d8565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561011457600080fd5b506100a9610123366004611371565b610a02565b34801561013457600080fd5b506100a961014336600461138c565b610adf565b34801561015457600080fd5b50604051600181526020016100ff565b34801561017057600080fd5b5061018461017f366004611371565b610bcd565b6040805197151588526001600160a01b039687166020890152941515948701949094526060860192909252608085015260a08401521660c082015260e0016100ff565b3480156101d357600080fd5b506100a96101e23660046113bf565b610d36565b3480156101f357600080fd5b506001546100eb906001600160a01b031681565b34801561021357600080fd5b506100a9610222366004611371565b610e56565b6002600054141561027f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556001600160a01b0383166102aa5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b03831660009081526002602052604090205460ff166103095760405162461bcd60e51b815260206004820152601460248201527344697370656e736572206e6f742061637469766560601b6044820152606401610276565b6000821161034f5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081e995c9bc8185b5bdd5b9d606a1b6044820152606401610276565b6001600160a01b0383166000908152600260205260409020600101548211156103ac5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610276565b6001600160a01b03838116600090815260026020526040902060030154161561044d576001600160a01b0383811660009081526002602052604090206003015416331461044d5760405162461bcd60e51b815260206004820152602960248201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f2072604482015268195c5d595cdd08111560ba1b6064820152608401610276565b6040516370a0823160e01b81526001600160a01b03828116600483015284916000918316906370a0823190602401602060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bc9190611429565b6001600160a01b03861660009081526002602081905260409091200154909150811061052a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f20686967680000000000000000006044820152606401610276565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105959190611429565b9050848110801561060957506040516355138f0d60e11b81523060048201526001600160a01b0384169063aa271e1a90602401602060405180830381865afa1580156105e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106099190611442565b156106f1576001600160a01b0383166340c10f19306106288489611464565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561066e57600080fd5b505af1158015610682573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190611429565b90505b848110156107375760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820726573657276657360681b6044820152606401610276565b61074b6001600160a01b0387168587611006565b836001600160a01b0316866001600160a01b03167f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135438760405161079091815260200190565b60405180910390a35050600160005550505050565b6001546001600160a01b031633146107f85760405162461bcd60e51b81526020600482015260166024820152752234b9b832b739b2b91d1037b7363c903937baba32b960511b6044820152606401610276565b6001600160a01b03851661081e5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b03858116600090815260026020526040902054610100900416158061086b57506001600160a01b0385811660009081526002602052604090205461010090048116908316145b6108b75760405162461bcd60e51b815260206004820152601960248201527f44617461746f6b656e20616c72656164792063726561746564000000000000006044820152606401610276565b6001600160a01b038581166000818152600260208181526040808420805489881661010081026001600160a81b031990921691909117600190811783558083018d90559482018b905560039182018054988a166001600160a01b0319998a16811790915582549586018355919095527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180549096168517909555845189815290810188905293840152917f7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c99060600160405180910390a3806001600160a01b0316856001600160a01b03167fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca560405160405180910390a35050505050565b600381815481106109e857600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116610a285760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038181166000908152600260205260409020546101009004163314610a965760405162461bcd60e51b815260206004820152601b60248201527f44617461746f6b656e20616c72656164792061637469766174656400000000006044820152606401610276565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b89190a250565b6001600160a01b038216610b055760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038281166000908152600260205260409020546101009004163314610b735760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c72656164792061637469766174656400000000006044820152606401610276565b6001600160a01b0382811660008181526002602052604080822060030180546001600160a01b0319169486169485179055517fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca59190a35050565b60008080808080806001600160a01b038816610bfb5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b0388811660008181526002602081905260409182902080546001820154919092015492516370a0823160e01b815230600482015260ff83169c506101009092049094169950929650945089916370a0823190602401602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190611429565b6040516355138f0d60e11b81523060048201529093506001600160a01b0382169063aa271e1a90602401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611442565b6001600160a01b03998a16600090815260026020526040902060030154989a979990989597949650929490921692915050565b6001600160a01b038316610d5c5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038381166000908152600260205260409020546101009004163314610dba5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610276565b6001600160a01b0383166000818152600260208190526040808320805460ff191660019081178255818101889055920185905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b03191684179055517fe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a87459190a2505050565b60026000541415610ea95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610276565b60026000556001600160a01b038116610ed45760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038181166000908152600260205260409020546101009004163314610f325760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610276565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190611429565b90508015610ffc57610fbb6001600160a01b0384163383611006565b60405181815233906001600160a01b038516907f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9060200160405180910390a35b5050600160005550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261105890849061105d565b505050565b60006110b2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661112f9092919063ffffffff16565b80519091501561105857808060200190518101906110d09190611442565b6110585760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610276565b606061113e8484600085611148565b90505b9392505050565b6060824710156111a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610276565b843b6111f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610276565b600080866001600160a01b0316858760405161121391906114b9565b60006040518083038185875af1925050503d8060008114611250576040519150601f19603f3d011682016040523d82523d6000602084013e611255565b606091505b5091509150611265828286611270565b979650505050505050565b6060831561127f575081611141565b82511561128f5782518084602001fd5b8160405162461bcd60e51b815260040161027691906114d5565b80356001600160a01b03811681146112c057600080fd5b919050565b6000806000606084860312156112da57600080fd5b6112e3846112a9565b9250602084013591506112f8604085016112a9565b90509250925092565b600080600080600060a0868803121561131957600080fd5b611322866112a9565b9450602086013593506040860135925061133e606087016112a9565b915061134c608087016112a9565b90509295509295909350565b60006020828403121561136a57600080fd5b5035919050565b60006020828403121561138357600080fd5b611141826112a9565b6000806040838503121561139f57600080fd5b6113a8836112a9565b91506113b6602084016112a9565b90509250929050565b6000806000606084860312156113d457600080fd5b6113dd846112a9565b95602085013595506040909401359392505050565b6020808252601e908201527f496e76616c696420746f6b656e20636f6e747261637420616464726573730000604082015260600190565b60006020828403121561143b57600080fd5b5051919050565b60006020828403121561145457600080fd5b8151801515811461114157600080fd5b60008282101561148457634e487b7160e01b600052601160045260246000fd5b500390565b60005b838110156114a457818101518382015260200161148c565b838111156114b3576000848401525b50505050565b600082516114cb818460208701611489565b9190910192915050565b60208152600082518060208401526114f4816040850160208701611489565b601f01601f1916919091016040019291505056fea26469706673582212203d786a3237473f58ef40ae940f143ec7e55114c5cb755814614b2ef2be08a55064736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106100915760003560e01c80635d1ca631116100595780635d1ca63114610148578063645b8b1b14610164578063938d71d0146101c7578063f887ea40146101e7578063f9bfaa7d1461020757600080fd5b80631d746d831461009657806324ce2917146100ab5780633398086a146100cb5780633ea053eb1461010857806345d6646b14610128575b600080fd5b6100a96100a43660046112c5565b610227565b005b3480156100b757600080fd5b506100a96100c6366004611301565b6107a5565b3480156100d757600080fd5b506100eb6100e6366004611358565b6109d8565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561011457600080fd5b506100a9610123366004611371565b610a02565b34801561013457600080fd5b506100a961014336600461138c565b610adf565b34801561015457600080fd5b50604051600181526020016100ff565b34801561017057600080fd5b5061018461017f366004611371565b610bcd565b6040805197151588526001600160a01b039687166020890152941515948701949094526060860192909252608085015260a08401521660c082015260e0016100ff565b3480156101d357600080fd5b506100a96101e23660046113bf565b610d36565b3480156101f357600080fd5b506001546100eb906001600160a01b031681565b34801561021357600080fd5b506100a9610222366004611371565b610e56565b6002600054141561027f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556001600160a01b0383166102aa5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b03831660009081526002602052604090205460ff166103095760405162461bcd60e51b815260206004820152601460248201527344697370656e736572206e6f742061637469766560601b6044820152606401610276565b6000821161034f5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081e995c9bc8185b5bdd5b9d606a1b6044820152606401610276565b6001600160a01b0383166000908152600260205260409020600101548211156103ac5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610276565b6001600160a01b03838116600090815260026020526040902060030154161561044d576001600160a01b0383811660009081526002602052604090206003015416331461044d5760405162461bcd60e51b815260206004820152602960248201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f2072604482015268195c5d595cdd08111560ba1b6064820152608401610276565b6040516370a0823160e01b81526001600160a01b03828116600483015284916000918316906370a0823190602401602060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bc9190611429565b6001600160a01b03861660009081526002602081905260409091200154909150811061052a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f20686967680000000000000000006044820152606401610276565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105959190611429565b9050848110801561060957506040516355138f0d60e11b81523060048201526001600160a01b0384169063aa271e1a90602401602060405180830381865afa1580156105e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106099190611442565b156106f1576001600160a01b0383166340c10f19306106288489611464565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561066e57600080fd5b505af1158015610682573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190611429565b90505b848110156107375760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820726573657276657360681b6044820152606401610276565b61074b6001600160a01b0387168587611006565b836001600160a01b0316866001600160a01b03167f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135438760405161079091815260200190565b60405180910390a35050600160005550505050565b6001546001600160a01b031633146107f85760405162461bcd60e51b81526020600482015260166024820152752234b9b832b739b2b91d1037b7363c903937baba32b960511b6044820152606401610276565b6001600160a01b03851661081e5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b03858116600090815260026020526040902054610100900416158061086b57506001600160a01b0385811660009081526002602052604090205461010090048116908316145b6108b75760405162461bcd60e51b815260206004820152601960248201527f44617461746f6b656e20616c72656164792063726561746564000000000000006044820152606401610276565b6001600160a01b038581166000818152600260208181526040808420805489881661010081026001600160a81b031990921691909117600190811783558083018d90559482018b905560039182018054988a166001600160a01b0319998a16811790915582549586018355919095527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180549096168517909555845189815290810188905293840152917f7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c99060600160405180910390a3806001600160a01b0316856001600160a01b03167fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca560405160405180910390a35050505050565b600381815481106109e857600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116610a285760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038181166000908152600260205260409020546101009004163314610a965760405162461bcd60e51b815260206004820152601b60248201527f44617461746f6b656e20616c72656164792061637469766174656400000000006044820152606401610276565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b89190a250565b6001600160a01b038216610b055760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038281166000908152600260205260409020546101009004163314610b735760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c72656164792061637469766174656400000000006044820152606401610276565b6001600160a01b0382811660008181526002602052604080822060030180546001600160a01b0319169486169485179055517fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca59190a35050565b60008080808080806001600160a01b038816610bfb5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b0388811660008181526002602081905260409182902080546001820154919092015492516370a0823160e01b815230600482015260ff83169c506101009092049094169950929650945089916370a0823190602401602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190611429565b6040516355138f0d60e11b81523060048201529093506001600160a01b0382169063aa271e1a90602401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611442565b6001600160a01b03998a16600090815260026020526040902060030154989a979990989597949650929490921692915050565b6001600160a01b038316610d5c5760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038381166000908152600260205260409020546101009004163314610dba5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610276565b6001600160a01b0383166000818152600260208190526040808320805460ff191660019081178255818101889055920185905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b03191684179055517fe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a87459190a2505050565b60026000541415610ea95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610276565b60026000556001600160a01b038116610ed45760405162461bcd60e51b8152600401610276906113f2565b6001600160a01b038181166000908152600260205260409020546101009004163314610f325760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610276565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190611429565b90508015610ffc57610fbb6001600160a01b0384163383611006565b60405181815233906001600160a01b038516907f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9060200160405180910390a35b5050600160005550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261105890849061105d565b505050565b60006110b2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661112f9092919063ffffffff16565b80519091501561105857808060200190518101906110d09190611442565b6110585760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610276565b606061113e8484600085611148565b90505b9392505050565b6060824710156111a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610276565b843b6111f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610276565b600080866001600160a01b0316858760405161121391906114b9565b60006040518083038185875af1925050503d8060008114611250576040519150601f19603f3d011682016040523d82523d6000602084013e611255565b606091505b5091509150611265828286611270565b979650505050505050565b6060831561127f575081611141565b82511561128f5782518084602001fd5b8160405162461bcd60e51b815260040161027691906114d5565b80356001600160a01b03811681146112c057600080fd5b919050565b6000806000606084860312156112da57600080fd5b6112e3846112a9565b9250602084013591506112f8604085016112a9565b90509250925092565b600080600080600060a0868803121561131957600080fd5b611322866112a9565b9450602086013593506040860135925061133e606087016112a9565b915061134c608087016112a9565b90509295509295909350565b60006020828403121561136a57600080fd5b5035919050565b60006020828403121561138357600080fd5b611141826112a9565b6000806040838503121561139f57600080fd5b6113a8836112a9565b91506113b6602084016112a9565b90509250929050565b6000806000606084860312156113d457600080fd5b6113dd846112a9565b95602085013595506040909401359392505050565b6020808252601e908201527f496e76616c696420746f6b656e20636f6e747261637420616464726573730000604082015260600190565b60006020828403121561143b57600080fd5b5051919050565b60006020828403121561145457600080fd5b8151801515811461114157600080fd5b60008282101561148457634e487b7160e01b600052601160045260246000fd5b500390565b60005b838110156114a457818101518382015260200161148c565b838111156114b3576000848401525b50505050565b600082516114cb818460208701611489565b9190910192915050565b60208152600082518060208401526114f4816040850160208701611489565b601f01601f1916919091016040019291505056fea26469706673582212203d786a3237473f58ef40ae940f143ec7e55114c5cb755814614b2ef2be08a55064736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/abis/ERC20Roles.json b/abis/ERC20Roles.json index 0e430d1..8ae60db 100644 --- a/abis/ERC20Roles.json +++ b/abis/ERC20Roles.json @@ -1,204 +1,234 @@ - { - "_format": "hh-sol-artifact-1", - "contractName": "ERC20Roles", - "sourceName": "contracts/utils/ERC20Roles.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedFeeManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedMinter", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "CleanedPermissions", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedFeeManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedMinter", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "authERC20", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "permissions", - "outputs": [ - { - "internalType": "bool", - "name": "minter", - "type": "bool" - }, - { - "internalType": "bool", - "name": "feeManager", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610157806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301e882081461003b578063ef867ff414610083575b600080fd5b6100676100493660046100d8565b60006020819052908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b610096610091366004610108565b6100ae565b6040516001600160a01b03909116815260200161007a565b600181815481106100be57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000602082840312156100ea57600080fd5b81356001600160a01b038116811461010157600080fd5b9392505050565b60006020828403121561011a57600080fd5b503591905056fea26469706673582212208b39415173b3f678559d83bbb56ee8b4f17b6bd1c999526ee00defa21731a4cc64736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301e882081461003b578063ef867ff414610083575b600080fd5b6100676100493660046100d8565b60006020819052908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b610096610091366004610108565b6100ae565b6040516001600160a01b03909116815260200161007a565b600181815481106100be57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000602082840312156100ea57600080fd5b81356001600160a01b038116811461010157600080fd5b9392505050565b60006020828403121561011a57600080fd5b503591905056fea26469706673582212208b39415173b3f678559d83bbb56ee8b4f17b6bd1c999526ee00defa21731a4cc64736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} - } \ No newline at end of file + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Roles", + "sourceName": "contracts/utils/ERC20Roles.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedPaymentManager", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "CleanedPermissions", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedPaymentManager", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "authERC20", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getPermissions", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "internalType": "struct ERC20Roles.RolesERC20", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "permissions", + "outputs": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506101df806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301e8820814610046578063160a79251461008e578063ef867ff41461010b575b600080fd5b610072610054366004610160565b60006020819052908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b6100ec61009c366004610160565b6040805180820190915260008082526020820152506001600160a01b03166000908152602081815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b6040805182511515815260209283015115159281019290925201610085565b61011e610119366004610190565b610136565b6040516001600160a01b039091168152602001610085565b6001818154811061014657600080fd5b6000918252602090912001546001600160a01b0316905081565b60006020828403121561017257600080fd5b81356001600160a01b038116811461018957600080fd5b9392505050565b6000602082840312156101a257600080fd5b503591905056fea2646970667358221220ccf3df6db224ddd4890801a3179ede2341d3b79e67297621cef6008f522b4b9e64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301e8820814610046578063160a79251461008e578063ef867ff41461010b575b600080fd5b610072610054366004610160565b60006020819052908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b6100ec61009c366004610160565b6040805180820190915260008082526020820152506001600160a01b03166000908152602081815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b6040805182511515815260209283015115159281019290925201610085565b61011e610119366004610190565b610136565b6040516001600160a01b039091168152602001610085565b6001818154811061014657600080fd5b6000918252602090912001546001600160a01b0316905081565b60006020828403121561017257600080fd5b81356001600160a01b038116811461018957600080fd5b9392505050565b6000602082840312156101a257600080fd5b503591905056fea2646970667358221220ccf3df6db224ddd4890801a3179ede2341d3b79e67297621cef6008f522b4b9e64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/abis/ERC20Template.json b/abis/ERC20Template.json index 28aac98..cf4d1b3 100644 --- a/abis/ERC20Template.json +++ b/abis/ERC20Template.json @@ -115,31 +115,6 @@ "name": "CleanedPermissions", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "name": "ConsumeMarketFees", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -178,6 +153,19 @@ "name": "MinterProposed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "dispenserContract", + "type": "address" + } + ], + "name": "NewDispenser", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -188,10 +176,22 @@ "type": "bytes32" }, { - "indexed": false, + "indexed": true, "internalType": "address", "name": "owner", "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "exchangeContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" } ], "name": "NewFixedRate", @@ -246,13 +246,44 @@ { "indexed": false, "internalType": "address", - "name": "basetokenAddress", + "name": "baseTokenAddress", "type": "address" } ], "name": "NewPool", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "orderTxId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "number", + "type": "uint256" + } + ], + "name": "OrderReused", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -277,7 +308,7 @@ { "indexed": false, "internalType": "uint256", - "name": "serviceId", + "name": "serviceIndex", "type": "uint256" }, { @@ -292,12 +323,6 @@ "name": "publishMarketAddress", "type": "address" }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeMarketAddress", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -308,6 +333,61 @@ "name": "OrderStarted", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + } + ], + "name": "ProviderFees", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -333,6 +413,37 @@ "name": "PublishMarketFees", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "PublishMarketFeeAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "PublishMarketFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "PublishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "PublishMarketFeesChanged", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -437,19 +548,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "BASE_COMMUNITY_FEE_PERCENTAGE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -774,6 +872,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "getDispensers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getERC721Address", @@ -787,6 +898,31 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getFixedRates", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "internalType": "struct ERC20Template.fixedRate[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getId", @@ -813,6 +949,50 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getPermissions", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "internalType": "struct ERC20Roles.RolesERC20", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPools", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getPublishingMarketFee", @@ -899,6 +1079,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isERC20Deployer", + "outputs": [ + { + "internalType": "bool", + "name": "deployer", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "isInitialized", @@ -1074,6 +1273,66 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "orderTxId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC20Template.providerFees", + "name": "_providerFees", + "type": "tuple" + } + ], + "name": "reuseOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "router", @@ -1145,28 +1404,55 @@ }, { "internalType": "uint256", - "name": "amount", + "name": "serviceIndex", "type": "uint256" }, { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC20Template.providerFees", + "name": "_providerFees", + "type": "tuple" } ], "name": "startOrder", @@ -1261,8 +1547,8 @@ "type": "function" } ], - "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614284806200017f6000396000f3fe60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b0366004613813565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613f57565b34801561031357600080fd5b506103276103223660046139b4565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c610371366004613a47565b61091d565b34801561038257600080fd5b50610327610391366004613886565b610a64565b3480156103a257600080fd5b5061025c6103b1366004613813565b610b0e565b3480156103c257600080fd5b5061025c6103d1366004613813565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b506103276104913660046139b4565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed3660046139b4565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613d42565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c610542366004613813565b610e79565b34801561055357600080fd5b5061025c610562366004613886565b610fd5565b34801561057357600080fd5b50610278610582366004613b97565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b6366004613813565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec3660046139b4565b611380565b3480156105fd57600080fd5b5061034861060c366004613813565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e36600461393e565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c610683366004613813565b611632565b34801561069457600080fd5b506103276106a33660046139b4565b6116dd565b3480156106b457600080fd5b506103276106c33660046139b4565b611776565b3480156106d457600080fd5b506103276106e3366004613813565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c366004613813565b611783565b34801561072d57600080fd5b5061025c61073c366004613c4b565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613aa6565b611989565b34801561078257600080fd5b5061025c6107913660046138c7565b611ac3565b3480156107a257600080fd5b506103486107b136600461384d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613d42565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c6108703660046139e0565b611de3565b60606007805461088490614193565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614193565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60006109143384846127fe565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613cbd565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613fac565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d85612922565b5050505050565b6000610a71848484612a24565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b0385338584036127fe565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613cbd565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613fac565b610bb981612bf3565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613cbd565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613fac565b610bb981612c54565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690614036565b6127fe565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612cb4565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612cc7565b5050565b610bb93382612da6565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190613830565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612ef4565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613cbd565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612fa3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613cbd565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613fac565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c6141ff565b6020026020010151612922565b62250490846003815181106111b0576111b06141ff565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f6141ff565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613eab565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190613830565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9678284600081518110611320576113206141ff565b60200260200101518560018151811061133b5761133b6141ff565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f783338484036127fe565b6114018383612da6565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613cbd565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613fac565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613e6b565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613c32565b90506000826004815181106115a0576115a06141ff565b602002602001015111156115b7576115b784612922565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec6141ff565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461088490614193565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613cbd565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613fac565b610bb981612922565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c33858584036127fe565b5060019392505050565b6000610914338484612a24565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613cbd565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613fac565b610bb981612fc5565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613cbd565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613fac565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613f21565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a764000061404e565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d614113565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050614087565b6130d3565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b59836141ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca8989896127fe565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190613830565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f54118015611ed15750600e546001600160a01b031615155b8015611ee75750600d546001600160a01b031615155b1561214757600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613c15565b611fd25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611fe09060646135c5565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061200c90856135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561205257600080fd5b505af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613c15565b6120f05760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061213590856135d1565b60405190815260200160405180910390a35b60008311801561215f57506001600160a01b03841615155b801561217357506001600160a01b03851615155b1561239a576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190613c15565b61224a5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b6122558360646135c5565b91506001600160a01b03841663a9059cbb8661227186866135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190613c15565b61234f5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d161238886866135d1565b60405190815260200160405180910390a35b6000811180156123aa5750600082115b80156123c35750600e546001600160a01b038581169116145b80156123d757506001600160a01b03841615155b1561255f57600a546001600160a01b038086169163a9059cbb91166123fc8486612cb4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613c15565b6124d25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a36127ed565b6000811180156125795750600e546001600160a01b031615155b156126ab57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125ce57600080fd5b505af11580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190613c15565b6126615760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b6000821180156126c357506001600160a01b03841615155b156127ed57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613c15565b6127a85760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b611cca6127f8611d15565b88611776565b6001600160a01b0383166128605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b0382166128c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561298c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b038316612a885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b038216612aea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b03831660009081526020819052604090205481811015612b625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b99908490614036565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612be591815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612a189042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612a189042904390918252602082015260400190565b6000612cc08284614036565b9392505050565b6001600160a01b038216612d1d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612d2f9190614036565b90915550506001600160a01b03821660009081526020819052604081208054839290612d5c908490614036565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ea9908490614070565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612f5a5760006005600060068481548110612f1a57612f1a6141ff565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612f52816141ce565b915050612ef7565b50612f67600660006135dd565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561303f5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612a18565b600080846000815181106130e9576130e96141ff565b60200260200101519050600085600181518110613108576131086141ff565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561318a5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166132065760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b84600081518110613219576132196141ff565b60200260200101516000141561327d5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b84600081518110613290576132906141ff565b6020026020010151600981905550876000815181106132b1576132b16141ff565b6020026020010151600790805190602001906132ce9291906135fb565b50876001815181106132e2576132e26141ff565b6020026020010151600890805190602001906132ff9291906135fb565b50600b80546001600160a01b0319166001600160a01b038416179055855186906002908110613330576133306141ff565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161338d90889060009061118c5761118c6141ff565b60006001600160a01b0316876001815181106133ab576133ab6141ff565b60200260200101516001600160a01b031614613455576133e4876001815181106133d7576133d76141ff565b6020026020010151612fa3565b866001815181106133f7576133f76141ff565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc424360405161344c929190918252602082015260400190565b60405180910390a35b86600281518110613468576134686141ff565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106134a9576134a96141ff565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106134ea576134ea6141ff565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161352d9190613dcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612cc0828461404e565b6000612cc08284614070565b5080546000825590600052602060002090810190610bb9919061367f565b82805461360790614193565b90600052602060002090601f016020900481019282613629576000855561366f565b82601f1061364257805160ff191683800117855561366f565b8280016001018555821561366f579182015b8281111561366f578251825591602001919060010190613654565b5061367b92915061367f565b5090565b5b8082111561367b5760008155600101613680565b600067ffffffffffffffff8311156136ae576136ae614215565b6136c1601f8401601f1916602001613fe1565b90508281528383830111156136d557600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126136fe57600080fd5b50813567ffffffffffffffff81111561371657600080fd5b6020830191508360208260051b850101111561373157600080fd5b9250929050565b600082601f83011261374957600080fd5b8135602061375e61375983614012565b613fe1565b80838252828201915082860187848660051b890101111561377e57600080fd5b60005b858110156137a65781356137948161422b565b84529284019290840190600101613781565b5090979650505050505050565b600082601f8301126137c457600080fd5b813560206137d461375983614012565b80838252828201915082860187848660051b89010111156137f457600080fd5b60005b858110156137a6578135845292840192908401906001016137f7565b60006020828403121561382557600080fd5b8135612cc08161422b565b60006020828403121561384257600080fd5b8151612cc08161422b565b6000806040838503121561386057600080fd5b823561386b8161422b565b9150602083013561387b8161422b565b809150509250929050565b60008060006060848603121561389b57600080fd5b83356138a68161422b565b925060208401356138b68161422b565b929592945050506040919091013590565b600080600080600080600060e0888a0312156138e257600080fd5b87356138ed8161422b565b965060208801356138fd8161422b565b95506040880135945060608801359350608088013560ff8116811461392157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561395357600080fd5b833561395e8161422b565b9250602084013567ffffffffffffffff8082111561397b57600080fd5b61398787838801613738565b9350604086013591508082111561399d57600080fd5b506139aa868287016137b3565b9150509250925092565b600080604083850312156139c757600080fd5b82356139d28161422b565b946020939093013593505050565b60008060008060008060c087890312156139f957600080fd5b8635613a048161422b565b955060208701359450604087013593506060870135613a228161422b565b92506080870135613a328161422b565b8092505060a087013590509295509295509295565b600080600080600060a08688031215613a5f57600080fd5b8535613a6a8161422b565b945060208601359350604086013592506060860135613a8881614240565b91506080860135613a988161422b565b809150509295509295909350565b60008060008060008060008060008060a08b8d031215613ac557600080fd5b8a3567ffffffffffffffff80821115613add57600080fd5b613ae98e838f016136ec565b909c509a5060208d0135915080821115613b0257600080fd5b613b0e8e838f016136ec565b909a50985060408d0135915080821115613b2757600080fd5b613b338e838f016136ec565b909850965060608d0135915080821115613b4c57600080fd5b613b588e838f016136ec565b909650945060808d0135915080821115613b7157600080fd5b50613b7e8d828e016136ec565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b613bd0878388016137b3565b94506020860135915080821115613be657600080fd5b613bf2878388016137b3565b93506040860135915080821115613c0857600080fd5b506139aa86828701613738565b600060208284031215613c2757600080fd5b8151612cc081614240565b600060208284031215613c4457600080fd5b5051919050565b60008060208385031215613c5e57600080fd5b823567ffffffffffffffff80821115613c7657600080fd5b818501915085601f830112613c8a57600080fd5b813581811115613c9957600080fd5b866020828501011115613cab57600080fd5b60209290920196919550909350505050565b600060808284031215613ccf57600080fd5b6040516080810181811067ffffffffffffffff82111715613cf257613cf2614215565b6040528251613d0081614240565b81526020830151613d1081614240565b60208201526040830151613d2381614240565b60408201526060830151613d3681614240565b60608201529392505050565b600060208284031215613d5457600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d945781516001600160a01b031687529582019590820190600101613d6f565b509495945050505050565b600081518084526020808501945080840160005b83811015613d9457815187529582019590820190600101613db3565b600080835481600182811c915080831680613deb57607f831692505b6020808410821415613e0b57634e487b7160e01b86526022600452602486fd5b818015613e1f5760018114613e3057613e5d565b60ff19861689528489019650613e5d565b60008a81526020902060005b86811015613e555781548b820152908501908301613e3c565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613e8f90830185613d5b565b8281036040840152613ea18185613d9f565b9695505050505050565b60008186825b6002811015613ed95781516001600160a01b0316835260209283019290910190600101613eb1565b50505060a06040830152613ef060a0830186613d9f565b8281036060840152613f028186613d9f565b90508281036080840152613f168185613d5b565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613f8457858101830151858201604001528201613f68565b81811115613f96576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400a5761400a614215565b604052919050565b600067ffffffffffffffff82111561402c5761402c614215565b5060051b60200190565b60008219821115614049576140496141e9565b500190565b60008261406b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614082576140826141e9565b500390565b600061409561375984614012565b808482526020808301925084368760051b870111156140b357600080fd5b60005b8781101561410757813567ffffffffffffffff8111156140d557600080fd5b870136601f8201126140e657600080fd5b6140f4368235868401613694565b86525093820193908201906001016140b6565b50919695505050505050565b600061412161375984614012565b808482526020808301925084368760051b8701111561413f57600080fd5b60005b8781101561410757813567ffffffffffffffff81111561416157600080fd5b870136601f82011261417257600080fd5b614180368235868401613694565b8652509382019390820190600101614142565b600181811c908216806141a757607f821691505b602082108114156141c857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141e2576141e26141e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea26469706673582212202d86fd1a6312f0dfc70e2a07d5649bfa475307b8bd086787e2d1cbb4add62eca64736f6c63430008070033", - "deployedBytecode": "0x60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b0366004613813565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613f57565b34801561031357600080fd5b506103276103223660046139b4565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c610371366004613a47565b61091d565b34801561038257600080fd5b50610327610391366004613886565b610a64565b3480156103a257600080fd5b5061025c6103b1366004613813565b610b0e565b3480156103c257600080fd5b5061025c6103d1366004613813565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b506103276104913660046139b4565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed3660046139b4565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613d42565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c610542366004613813565b610e79565b34801561055357600080fd5b5061025c610562366004613886565b610fd5565b34801561057357600080fd5b50610278610582366004613b97565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b6366004613813565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec3660046139b4565b611380565b3480156105fd57600080fd5b5061034861060c366004613813565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e36600461393e565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c610683366004613813565b611632565b34801561069457600080fd5b506103276106a33660046139b4565b6116dd565b3480156106b457600080fd5b506103276106c33660046139b4565b611776565b3480156106d457600080fd5b506103276106e3366004613813565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c366004613813565b611783565b34801561072d57600080fd5b5061025c61073c366004613c4b565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613aa6565b611989565b34801561078257600080fd5b5061025c6107913660046138c7565b611ac3565b3480156107a257600080fd5b506103486107b136600461384d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613d42565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c6108703660046139e0565b611de3565b60606007805461088490614193565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614193565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60006109143384846127fe565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613cbd565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613fac565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d85612922565b5050505050565b6000610a71848484612a24565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b0385338584036127fe565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613cbd565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613fac565b610bb981612bf3565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613cbd565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613fac565b610bb981612c54565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690614036565b6127fe565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612cb4565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612cc7565b5050565b610bb93382612da6565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190613830565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612ef4565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613cbd565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612fa3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613cbd565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613fac565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c6141ff565b6020026020010151612922565b62250490846003815181106111b0576111b06141ff565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f6141ff565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613eab565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190613830565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9678284600081518110611320576113206141ff565b60200260200101518560018151811061133b5761133b6141ff565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f783338484036127fe565b6114018383612da6565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613cbd565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613fac565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613e6b565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613c32565b90506000826004815181106115a0576115a06141ff565b602002602001015111156115b7576115b784612922565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec6141ff565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461088490614193565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613cbd565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613fac565b610bb981612922565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c33858584036127fe565b5060019392505050565b6000610914338484612a24565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613cbd565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613fac565b610bb981612fc5565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613cbd565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613fac565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613f21565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a764000061404e565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d614113565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050614087565b6130d3565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b59836141ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca8989896127fe565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190613830565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f54118015611ed15750600e546001600160a01b031615155b8015611ee75750600d546001600160a01b031615155b1561214757600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613c15565b611fd25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611fe09060646135c5565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061200c90856135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561205257600080fd5b505af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613c15565b6120f05760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061213590856135d1565b60405190815260200160405180910390a35b60008311801561215f57506001600160a01b03841615155b801561217357506001600160a01b03851615155b1561239a576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190613c15565b61224a5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b6122558360646135c5565b91506001600160a01b03841663a9059cbb8661227186866135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190613c15565b61234f5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d161238886866135d1565b60405190815260200160405180910390a35b6000811180156123aa5750600082115b80156123c35750600e546001600160a01b038581169116145b80156123d757506001600160a01b03841615155b1561255f57600a546001600160a01b038086169163a9059cbb91166123fc8486612cb4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613c15565b6124d25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a36127ed565b6000811180156125795750600e546001600160a01b031615155b156126ab57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125ce57600080fd5b505af11580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190613c15565b6126615760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b6000821180156126c357506001600160a01b03841615155b156127ed57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613c15565b6127a85760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b611cca6127f8611d15565b88611776565b6001600160a01b0383166128605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b0382166128c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561298c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b038316612a885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b038216612aea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b03831660009081526020819052604090205481811015612b625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b99908490614036565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612be591815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612a189042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612a189042904390918252602082015260400190565b6000612cc08284614036565b9392505050565b6001600160a01b038216612d1d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612d2f9190614036565b90915550506001600160a01b03821660009081526020819052604081208054839290612d5c908490614036565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ea9908490614070565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612f5a5760006005600060068481548110612f1a57612f1a6141ff565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612f52816141ce565b915050612ef7565b50612f67600660006135dd565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561303f5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612a18565b600080846000815181106130e9576130e96141ff565b60200260200101519050600085600181518110613108576131086141ff565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561318a5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166132065760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b84600081518110613219576132196141ff565b60200260200101516000141561327d5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b84600081518110613290576132906141ff565b6020026020010151600981905550876000815181106132b1576132b16141ff565b6020026020010151600790805190602001906132ce9291906135fb565b50876001815181106132e2576132e26141ff565b6020026020010151600890805190602001906132ff9291906135fb565b50600b80546001600160a01b0319166001600160a01b038416179055855186906002908110613330576133306141ff565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161338d90889060009061118c5761118c6141ff565b60006001600160a01b0316876001815181106133ab576133ab6141ff565b60200260200101516001600160a01b031614613455576133e4876001815181106133d7576133d76141ff565b6020026020010151612fa3565b866001815181106133f7576133f76141ff565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc424360405161344c929190918252602082015260400190565b60405180910390a35b86600281518110613468576134686141ff565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106134a9576134a96141ff565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106134ea576134ea6141ff565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161352d9190613dcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612cc0828461404e565b6000612cc08284614070565b5080546000825590600052602060002090810190610bb9919061367f565b82805461360790614193565b90600052602060002090601f016020900481019282613629576000855561366f565b82601f1061364257805160ff191683800117855561366f565b8280016001018555821561366f579182015b8281111561366f578251825591602001919060010190613654565b5061367b92915061367f565b5090565b5b8082111561367b5760008155600101613680565b600067ffffffffffffffff8311156136ae576136ae614215565b6136c1601f8401601f1916602001613fe1565b90508281528383830111156136d557600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126136fe57600080fd5b50813567ffffffffffffffff81111561371657600080fd5b6020830191508360208260051b850101111561373157600080fd5b9250929050565b600082601f83011261374957600080fd5b8135602061375e61375983614012565b613fe1565b80838252828201915082860187848660051b890101111561377e57600080fd5b60005b858110156137a65781356137948161422b565b84529284019290840190600101613781565b5090979650505050505050565b600082601f8301126137c457600080fd5b813560206137d461375983614012565b80838252828201915082860187848660051b89010111156137f457600080fd5b60005b858110156137a6578135845292840192908401906001016137f7565b60006020828403121561382557600080fd5b8135612cc08161422b565b60006020828403121561384257600080fd5b8151612cc08161422b565b6000806040838503121561386057600080fd5b823561386b8161422b565b9150602083013561387b8161422b565b809150509250929050565b60008060006060848603121561389b57600080fd5b83356138a68161422b565b925060208401356138b68161422b565b929592945050506040919091013590565b600080600080600080600060e0888a0312156138e257600080fd5b87356138ed8161422b565b965060208801356138fd8161422b565b95506040880135945060608801359350608088013560ff8116811461392157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561395357600080fd5b833561395e8161422b565b9250602084013567ffffffffffffffff8082111561397b57600080fd5b61398787838801613738565b9350604086013591508082111561399d57600080fd5b506139aa868287016137b3565b9150509250925092565b600080604083850312156139c757600080fd5b82356139d28161422b565b946020939093013593505050565b60008060008060008060c087890312156139f957600080fd5b8635613a048161422b565b955060208701359450604087013593506060870135613a228161422b565b92506080870135613a328161422b565b8092505060a087013590509295509295509295565b600080600080600060a08688031215613a5f57600080fd5b8535613a6a8161422b565b945060208601359350604086013592506060860135613a8881614240565b91506080860135613a988161422b565b809150509295509295909350565b60008060008060008060008060008060a08b8d031215613ac557600080fd5b8a3567ffffffffffffffff80821115613add57600080fd5b613ae98e838f016136ec565b909c509a5060208d0135915080821115613b0257600080fd5b613b0e8e838f016136ec565b909a50985060408d0135915080821115613b2757600080fd5b613b338e838f016136ec565b909850965060608d0135915080821115613b4c57600080fd5b613b588e838f016136ec565b909650945060808d0135915080821115613b7157600080fd5b50613b7e8d828e016136ec565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b613bd0878388016137b3565b94506020860135915080821115613be657600080fd5b613bf2878388016137b3565b93506040860135915080821115613c0857600080fd5b506139aa86828701613738565b600060208284031215613c2757600080fd5b8151612cc081614240565b600060208284031215613c4457600080fd5b5051919050565b60008060208385031215613c5e57600080fd5b823567ffffffffffffffff80821115613c7657600080fd5b818501915085601f830112613c8a57600080fd5b813581811115613c9957600080fd5b866020828501011115613cab57600080fd5b60209290920196919550909350505050565b600060808284031215613ccf57600080fd5b6040516080810181811067ffffffffffffffff82111715613cf257613cf2614215565b6040528251613d0081614240565b81526020830151613d1081614240565b60208201526040830151613d2381614240565b60408201526060830151613d3681614240565b60608201529392505050565b600060208284031215613d5457600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d945781516001600160a01b031687529582019590820190600101613d6f565b509495945050505050565b600081518084526020808501945080840160005b83811015613d9457815187529582019590820190600101613db3565b600080835481600182811c915080831680613deb57607f831692505b6020808410821415613e0b57634e487b7160e01b86526022600452602486fd5b818015613e1f5760018114613e3057613e5d565b60ff19861689528489019650613e5d565b60008a81526020902060005b86811015613e555781548b820152908501908301613e3c565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613e8f90830185613d5b565b8281036040840152613ea18185613d9f565b9695505050505050565b60008186825b6002811015613ed95781516001600160a01b0316835260209283019290910190600101613eb1565b50505060a06040830152613ef060a0830186613d9f565b8281036060840152613f028186613d9f565b90508281036080840152613f168185613d5b565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613f8457858101830151858201604001528201613f68565b81811115613f96576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400a5761400a614215565b604052919050565b600067ffffffffffffffff82111561402c5761402c614215565b5060051b60200190565b60008219821115614049576140496141e9565b500190565b60008261406b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614082576140826141e9565b500390565b600061409561375984614012565b808482526020808301925084368760051b870111156140b357600080fd5b60005b8781101561410757813567ffffffffffffffff8111156140d557600080fd5b870136601f8201126140e657600080fd5b6140f4368235868401613694565b86525093820193908201906001016140b6565b50919695505050505050565b600061412161375984614012565b808482526020808301925084368760051b8701111561413f57600080fd5b60005b8781101561410757813567ffffffffffffffff81111561416157600080fd5b870136601f82011261417257600080fd5b614180368235868401613694565b8652509382019390820190600101614142565b600181811c908216806141a757607f821691505b602082108114156141c857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141e2576141e26141e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea26469706673582212202d86fd1a6312f0dfc70e2a07d5649bfa475307b8bd086787e2d1cbb4add62eca64736f6c63430008070033", + "bytecode": "0x6080604052600b805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d9160039162000091565b5080516200008390600490602084019062000091565b505060016007555062000174565b8280546200009f9062000137565b90600052602060002090601f016020900481019282620000c357600085556200010e565b82601f10620000de57805160ff19168380011785556200010e565b828001600101855582156200010e579182015b828111156200010e578251825591602001919060010190620000f1565b506200011c92915062000120565b5090565b5b808211156200011c576000815560010162000121565b600181811c908216806200014c57607f821691505b602082108114156200016e57634e487b7160e01b600052602260045260246000fd5b50919050565b614a5080620001846000396000f3fe6080604052600436106102ad5760003560e01c80635bfe4da011610166578063a457c2d7116100d3578063d505accf1161008f578063e487c2e81161006c578063e487c2e814610965578063ec342ad01461097a578063ef867ff414610996578063f887ea40146109b657005b8063d505accf146108f7578063dd62ed3e14610917578063e086e5ec1461095d57005b8063a457c2d71461081e578063a9059cbb1461083e578063aa271e1a1461085e578063aa492ef914610897578063ab62f0e1146108b7578063b3998be0146108d757005b80637ecebe00116101225780637ecebe001461076757806382c03da5146107945780638b96412b146107a957806395d89b41146107c957806396fb3eaf146107de578063983b2d56146107fe57005b80635bfe4da0146106a65780635d1ca631146106c6578063673a2a1f146106da57806370a08231146106ef57806379cc6790146107255780637dda231e1461074557005b8063355274ea1161021c578063397b3743116101d857806347ac7d55116101b557806347ac7d551461062f5780634f189cb21461065157806357a3a31b1461066657806357ad5ff61461068657005b8063397b3743146105b357806340c10f19146105ef57806342966c681461060f57005b8063355274ea14610509578063361fef491461051e578063363bdb461461053e5780633644e5151461055e578063392e53cd14610574578063395093511461059357005b8063191c918a1161026b578063191c918a1461043357806323b872dd1461045357806325b00243146104735780633092afd51461049357806330adf81f146104b3578063313ce567146104e757005b80627ffb78146102af57806301e88208146102e657806306fdde0314610336578063095ea7b314610358578063160a79251461038857806318160ddd14610414575b005b3480156102bb57600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f257600080fd5b5061031f610301366004613c51565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102dd565b34801561034257600080fd5b5061034b6109d6565b6040516102dd9190613c9a565b34801561036457600080fd5b50610378610373366004613ccd565b610a68565b60405190151581526020016102dd565b34801561039457600080fd5b506103f56103a3366004613c51565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102dd565b34801561042057600080fd5b506002545b6040519081526020016102dd565b34801561043f57600080fd5b506102ad61044e366004613d07565b610a7e565b34801561045f57600080fd5b5061037861046e366004613d66565b610c5a565b34801561047f57600080fd5b506102ad61048e366004613c51565b610d06565b34801561049f57600080fd5b506102ad6104ae366004613c51565b610da0565b3480156104bf57600080fd5b506104257f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104f357600080fd5b5060125b60405160ff90911681526020016102dd565b34801561051557600080fd5b50600a54610425565b34801561052a57600080fd5b506102ad610539366004613dc0565b610e37565b34801561054a57600080fd5b506102ad610559366004613e06565b610eb5565b34801561056a57600080fd5b5061042560115481565b34801561058057600080fd5b50600b54600160a01b900460ff16610378565b34801561059f57600080fd5b506103786105ae366004613ccd565b611210565b3480156105bf57600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102dd565b3480156105fb57600080fd5b506102ad61060a366004613ccd565b61124c565b34801561061b57600080fd5b506102ad61062a366004613e5e565b61131d565b34801561063b57600080fd5b50610644611327565b6040516102dd9190613ebb565b34801561065d57600080fd5b506102ad611388565b34801561067257600080fd5b506102ad610681366004613c51565b61146f565b34801561069257600080fd5b506102ad6106a1366004613d66565b6115b1565b3480156106b257600080fd5b506102c96106c1366004614006565b611705565b3480156106d257600080fd5b5060016104f7565b3480156106e657600080fd5b50610644611b0a565b3480156106fb57600080fd5b5061042561070a366004613c51565b6001600160a01b031660009081526020819052604090205490565b34801561073157600080fd5b506102ad610740366004613ccd565b611b6a565b34801561075157600080fd5b5061075a611bf0565b6040516102dd9190614083565b34801561077357600080fd5b50610425610782366004613c51565b60126020526000908152604090205481565b3480156107a057600080fd5b506102ad611c65565b3480156107b557600080fd5b506104256107c43660046140db565b611cbf565b3480156107d557600080fd5b5061034b611f4f565b3480156107ea57600080fd5b506103786107f9366004613c51565b611f5e565b34801561080a57600080fd5b506102ad610819366004613c51565b611fd9565b34801561082a57600080fd5b50610378610839366004613ccd565b612070565b34801561084a57600080fd5b50610378610859366004613ccd565b612109565b34801561086a57600080fd5b50610378610879366004613c51565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156108a357600080fd5b506102ad6108b2366004613c51565b612116565b3480156108c357600080fd5b506102ad6108d2366004614146565b6121ad565b3480156108e357600080fd5b506103786108f2366004614202565b6122de565b34801561090357600080fd5b506102ad610912366004614308565b612418565b34801561092357600080fd5b50610425610932366004614376565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ad61262a565b34801561097157600080fd5b506102c961266a565b34801561098657600080fd5b50610425670de0b6b3a764000081565b3480156109a257600080fd5b506102c96109b1366004613e5e565b6126ff565b3480156109c257600080fd5b506013546102c9906001600160a01b031681565b6060600880546109e5906143af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a11906143af565b8015610a5e5780601f10610a3357610100808354040283529160200191610a5e565b820191906000526020600020905b815481529060010190602001808311610a4157829003601f168201915b5050505050905090565b6000610a75338484612729565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec91906143e4565b60200151610b155760405162461bcd60e51b8152600401610b0c90614468565b60405180910390fd5b60026007541415610b385760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050508115610bcd57610bcd8561284d565b601680546001810182556000919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a150506001600755505050565b6000610c6784848461294f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b0c565b610cf98533858403612729565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906143e4565b60200151610d945760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b1f565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e91906143e4565b60200151610e2e5760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b80565b60026007541415610e5a5760405162461bcd60e51b8152600401610b0c9061449d565b600260075560408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a1610eac81612be0565b50506001600755565b60026007541415610ed85760405162461bcd60e51b8152600401610b0c9061449d565b600260075533600090815260208190526040812054670de0b6b3a76400009190821115610f535760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610b0c565b600e5460408051338152602081018590529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000601054118015610fce5750600f546001600160a01b031615155b8015610fe45750600e546001600160a01b031615155b1561119e57601054600f54611008916001600160a01b039091169033903090612f72565b60135460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107691906144d4565b905080156110a8576110a5670de0b6b3a764000061109f83601054612fdd90919063ffffffff16565b90612fe9565b91505b600e546010546110d9916001600160a01b0316906110c69085612ff5565b600f546001600160a01b03169190613001565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061111e9086612ff5565b60405190815260200160405180910390a3811561119c57600b54600f54611152916001600160a01b03918216911684613001565b600f54600b546040518481526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b505b6111a783612be0565b6111b86111b261266a565b83612109565b6112045760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610b0c565b50506001600755505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a75918590611247908690614503565b612729565b3360009081526005602052604090205460ff166112ab5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610b0c565b600a546112c1826112bb60025490565b90613031565b111561130f5760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610b0c565b611319828261303d565b5050565b610d9d338261311c565b60606016805480602002602001604051908101604052809291908181526020018280548015610a5e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611361575050505050905090565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f5919061451b565b6001600160a01b0316336001600160a01b0316146114555760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610b0c565b61145d61326a565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff16806115005750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb91906143e4565b602001515b6115605760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610b0c565b61156981613319565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b0316331461161e5760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610b0c565b6001600160a01b0383166116855760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610b0c565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177491906143e4565b602001516117945760405162461bcd60e51b8152600401610b0c90614468565b600260075414156117b75760405162461bcd60e51b8152600401610b0c9061449d565b60026007556117c560025490565b1561181e5760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610b0c565b6118418260008151811061183457611834614538565b602002602001015161284d565b601360009054906101000a90046001600160a01b03166001600160a01b031663510f34656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b891906144d4565b846003815181106118cb576118cb614538565b602002602001015110156119615760405162461bcd60e51b815260206004820152605160248201527f455243323054656d706c6174653a2056657374696e6720706572696f6420746f60448201527f6f206c6f772e2053656520466163746f7279526f757465722e6d696e56657374606482015270696e67506572696f64496e426c6f636b7360781b608482015260a401610b0c565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061199957611999614538565b60209081029190910101516001600160a01b0390811690915260135460405163ee3bc63560e01b8152929350169063ee3bc635906119e190849089908990899060040161457e565b6020604051808303816000875af1158015611a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a24919061451b565b6014805460018101825560009182527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319166001600160a01b03841617905584519193507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9679184918691611aa557611aa5614538565b602002602001015185600181518110611ac057611ac0614538565b6020026020010151604051611af5939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a15060016007559392505050565b60606014805480602002602001604051908101604052809291908181526020018280548015610a5e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611361575050505050905090565b6000611b768333610932565b905081811015611bd45760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610b0c565b611be18333848403612729565b611beb838361311c565b505050565b60606015805480602002602001604051908101604052809291908181526020016000905b82821015611c5c576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611c14565b50505050905090565b600c546001600160a01b031633146114555760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610b0c565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e91906143e4565b60200151611d4e5760405162461bcd60e51b8152600401610b0c90614468565b60026007541415611d715760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051638244937560e01b81526001600160a01b0390911690638244937590611daa908790879087906004016145e9565b6020604051808303816000875af1158015611dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ded91906144d4565b9050600082600481518110611e0457611e04614538565b60200260200101511115611e1b57611e1b8461284d565b82600081518110611e2e57611e2e614538565b60200260200101516001600160a01b031683600181518110611e5257611e52614538565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f348058387604051611ea69291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03948516815260208101828152601580546001808201835560009290925292517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475600290940293840180546001600160a01b0319169190981617909655517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec476909101556007939093555090919050565b6060600980546109e5906143af565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf91906143e4565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906143e4565b602001516120675760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161284d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156120f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b0c565b6120ff3385858403612729565b5060019392505050565b6000610a7533848461294f565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218491906143e4565b602001516121a45760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161333b565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b91906143e4565b6020015161223b5760405162461bcd60e51b8152600401610b0c90614468565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906122a790849087908790600401614652565b600060405180830381600087803b1580156122c157600080fd5b505af11580156122d5573d6000803e3d6000fd5b50505050505050565b600b54600090600160a01b900460ff16156123555760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610b0c565b6124096123628b8d6146cc565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061240492508991508a9050614753565b613449565b9b9a5050505050505050505050565b4384101561245b5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610b0c565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876124ae836147ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161252792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612592573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906125c85750886001600160a01b0316816001600160a01b0316145b6126145760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610b0c565b61261f898989612729565b505050505050505050565b61263261266a565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610d9d573d6000803e3d6000fd5b600d546000906001600160a01b03166126ef57600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea919061451b565b905090565b50600d546001600160a01b031690565b6006818154811061270f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03831661278b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0c565b6001600160a01b0382166127ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128b75760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610b0c565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0c565b6001600160a01b038216612a155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0c565b6001600160a01b03831660009081526020819052604090205481811015612a8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b0c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612ac4908490614503565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1091815260200190565b60405180910390a35b50505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906129439042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906129439042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600081612c2460e08501856147e9565b612c316020870187613c51565b612c416040880160208901613c51565b87604001358860c00135604051602001612c609695949392919061482f565b60405160208183030381529060405280519060200120604051602001612c8792919061486d565b60408051601f19818403018152919052805160209091012090506000600182612cb6608087016060880161488f565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa158015612d0d573d6000803e3d6000fd5b5050604051601f1901519150612d2890506020850185613c51565b6001600160a01b0316816001600160a01b031614612d7f5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610b0c565b612d8f6040850160208601613c51565b6001600160a01b0316612da56020860186613c51565b6001600160a01b03167f22bdc88918efde2160206f0b5314bae23de0ae7fd1e9e7853d53178e32355a876040870135612de160e08901896147e9565b612df160808b0160608c0161488f565b8a608001358b60a001358c60c00135604051612e1397969594939291906148aa565b60405180910390a360008460400135118015612e4857506000612e3c6040860160208701613c51565b6001600160a01b031614155b8015612e6a57506000612e5e6020860186613c51565b6001600160a01b031614155b15612b195760135460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906144d4565b905060008115612f0457612f01670de0b6b3a764000061109f604089013585612fdd565b90505b6000612f14604088013583612ff5565b9050612f4933612f2760208a018a613c51565b83612f3860408c0160208d01613c51565b6001600160a01b0316929190612f72565b81156122d557600b546122d59033906001600160a01b031684612f3860408c0160208d01613c51565b6040516001600160a01b0380851660248301528316604482015260648101829052612b199085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261393b565b6000610cff82846148ed565b6000610cff828461490c565b6000610cff828461492e565b6040516001600160a01b038316602482015260448101829052611beb90849063a9059cbb60e01b90606401612fa6565b6000610cff8284614503565b6001600160a01b0382166130935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b0c565b80600260008282546130a59190614503565b90915550506001600160a01b038216600090815260208190526040812080548392906130d2908490614503565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661317c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b0c565b6001600160a01b038216600090815260208190526040902054818110156131f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b0c565b6001600160a01b038316600090815260208190526040812083830390556002805484929061321f90849061492e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b6006548110156132d0576000600560006006848154811061329057613290614538565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff1916905550806132c8816147ce565b91505061326d565b506132dd60066000613b85565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156133b55760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610b0c565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612943565b6000808460008151811061345f5761345f614538565b6020026020010151905060008560018151811061347e5761347e614538565b6020026020010151905060006001600160a01b0316826001600160a01b031614156135005760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610b0c565b6001600160a01b03811661357c5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610b0c565b8460008151811061358f5761358f614538565b6020026020010151600014156135f35760405162461bcd60e51b8152602060048201526024808201527f44617461746f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610b0c565b8460008151811061360657613606614538565b6020026020010151600a819055508760008151811061362757613627614538565b602002602001015160089080519060200190613644929190613ba3565b508760018151811061365857613658614538565b602002602001015160099080519060200190613675929190613ba3565b50600c80546001600160a01b0319166001600160a01b0384161790558551869060029081106136a6576136a6614538565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161370390889060009061183457611834614538565b60006001600160a01b03168760018151811061372157613721614538565b60200260200101516001600160a01b0316146137cb5761375a8760018151811061374d5761374d614538565b6020026020010151613319565b8660018151811061376d5761376d614538565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516137c2929190918252602082015260400190565b60405180910390a35b866002815181106137de576137de614538565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061381f5761381f614538565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061386057613860614538565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516138a39190614945565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b6000613990826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a0d9092919063ffffffff16565b805190915015611beb57808060200190518101906139ae91906149e1565b611beb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b0c565b6060613a1c8484600085613a24565b949350505050565b606082471015613a855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b0c565b843b613ad35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b0c565b600080866001600160a01b03168587604051613aef91906149fe565b60006040518083038185875af1925050503d8060008114613b2c576040519150601f19603f3d011682016040523d82523d6000602084013e613b31565b606091505b5091509150613b41828286613b4c565b979650505050505050565b60608315613b5b575081610cff565b825115613b6b5782518084602001fd5b8160405162461bcd60e51b8152600401610b0c9190613c9a565b5080546000825590600052602060002090810190610d9d9190613c27565b828054613baf906143af565b90600052602060002090601f016020900481019282613bd15760008555613c17565b82601f10613bea57805160ff1916838001178555613c17565b82800160010185558215613c17579182015b82811115613c17578251825591602001919060010190613bfc565b50613c23929150613c27565b5090565b5b80821115613c235760008155600101613c28565b6001600160a01b0381168114610d9d57600080fd5b600060208284031215613c6357600080fd5b8135610cff81613c3c565b60005b83811015613c89578181015183820152602001613c71565b83811115612b195750506000910152565b6020815260008251806020840152613cb9816040850160208701613c6e565b601f01601f19169190910160400192915050565b60008060408385031215613ce057600080fd5b8235613ceb81613c3c565b946020939093013593505050565b8015158114610d9d57600080fd5b600080600080600060a08688031215613d1f57600080fd5b8535613d2a81613c3c565b945060208601359350604086013592506060860135613d4881613cf9565b91506080860135613d5881613c3c565b809150509295509295909350565b600080600060608486031215613d7b57600080fd5b8335613d8681613c3c565b92506020840135613d9681613c3c565b929592945050506040919091013590565b60006101008284031215613dba57600080fd5b50919050565b60008060408385031215613dd357600080fd5b8235915060208301356001600160401b03811115613df057600080fd5b613dfc85828601613da7565b9150509250929050565b600080600060608486031215613e1b57600080fd5b8335613e2681613c3c565b92506020840135915060408401356001600160401b03811115613e4857600080fd5b613e5486828701613da7565b9150509250925092565b600060208284031215613e7057600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613eb05781516001600160a01b031687529582019590820190600101613e8b565b509495945050505050565b602081526000610cff6020830184613e77565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f0c57613f0c613ece565b604052919050565b60006001600160401b03821115613f2d57613f2d613ece565b5060051b60200190565b600082601f830112613f4857600080fd5b81356020613f5d613f5883613f14565b613ee4565b82815260059290921b84018101918181019086841115613f7c57600080fd5b8286015b84811015613f975780358352918301918301613f80565b509695505050505050565b600082601f830112613fb357600080fd5b81356020613fc3613f5883613f14565b82815260059290921b84018101918181019086841115613fe257600080fd5b8286015b84811015613f97578035613ff981613c3c565b8352918301918301613fe6565b60008060006060848603121561401b57600080fd5b83356001600160401b038082111561403257600080fd5b61403e87838801613f37565b9450602086013591508082111561405457600080fd5b61406087838801613f37565b9350604086013591508082111561407657600080fd5b50613e5486828701613fa2565b602080825282518282018190526000919060409081850190868401855b828110156140ce57815180516001600160a01b031685528601518685015292840192908501906001016140a0565b5091979650505050505050565b6000806000606084860312156140f057600080fd5b83356140fb81613c3c565b925060208401356001600160401b038082111561411757600080fd5b61412387838801613fa2565b9350604086013591508082111561413957600080fd5b50613e5486828701613f37565b6000806020838503121561415957600080fd5b82356001600160401b038082111561417057600080fd5b818501915085601f83011261418457600080fd5b81358181111561419357600080fd5b8660208285010111156141a557600080fd5b60209290920196919550909350505050565b60008083601f8401126141c957600080fd5b5081356001600160401b038111156141e057600080fd5b6020830191508360208260051b85010111156141fb57600080fd5b9250929050565b60008060008060008060008060008060a08b8d03121561422157600080fd5b8a356001600160401b038082111561423857600080fd5b6142448e838f016141b7565b909c509a5060208d013591508082111561425d57600080fd5b6142698e838f016141b7565b909a50985060408d013591508082111561428257600080fd5b61428e8e838f016141b7565b909850965060608d01359150808211156142a757600080fd5b6142b38e838f016141b7565b909650945060808d01359150808211156142cc57600080fd5b506142d98d828e016141b7565b915080935050809150509295989b9194979a5092959850565b803560ff8116811461430357600080fd5b919050565b600080600080600080600060e0888a03121561432357600080fd5b873561432e81613c3c565b9650602088013561433e81613c3c565b9550604088013594506060880135935061435a608089016142f2565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561438957600080fd5b823561439481613c3c565b915060208301356143a481613c3c565b809150509250929050565b600181811c908216806143c357607f821691505b60208210811415613dba57634e487b7160e01b600052602260045260246000fd5b6000608082840312156143f657600080fd5b604051608081018181106001600160401b038211171561441857614418613ece565b604052825161442681613cf9565b8152602083015161443681613cf9565b6020820152604083015161444981613cf9565b6040820152606083015161445c81613cf9565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156144e657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614516576145166144ed565b500190565b60006020828403121561452d57600080fd5b8151610cff81613c3c565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613eb057815187529582019590820190600101614562565b60008186825b60028110156145ac5781516001600160a01b0316835260209283019290910190600101614584565b50505060a060408301526145c360a083018661454e565b82810360608401526145d5818661454e565b90508281036080840152613b418185613e77565b6001600160a01b038416815260606020820181905260009061460d90830185613e77565b828103604084015261461f818561454e565b9695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b83815260406020820152600061466c604083018486614629565b95945050505050565b60006001600160401b0383111561468e5761468e613ece565b6146a1601f8401601f1916602001613ee4565b90508281528383830111156146b557600080fd5b828260208301376000602084830101529392505050565b60006146da613f5884613f14565b80848252602080830192508560051b8501368111156146f857600080fd5b855b818110156147475780356001600160401b038111156147195760008081fd5b870136601f82011261472b5760008081fd5b614739368235868401614675565b8652509382019382016146fa565b50919695505050505050565b6000614761613f5884613f14565b80848252602080830192508560051b85013681111561477f57600080fd5b855b818110156147475780356001600160401b038111156147a05760008081fd5b870136601f8201126147b25760008081fd5b6147c0368235868401614675565b865250938201938201614781565b60006000198214156147e2576147e26144ed565b5060010190565b6000808335601e1984360301811261480057600080fd5b8301803591506001600160401b0382111561481a57600080fd5b6020019150368190038213156141fb57600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b6000835161487f818460208801613c6e565b9190910191825250602001919050565b6000602082840312156148a157600080fd5b610cff826142f2565b87815260c0602082015260006148c460c08301888a614629565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b6000816000190483118215151615614907576149076144ed565b500290565b60008261492957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614940576149406144ed565b500390565b600080835481600182811c91508083168061496157607f831692505b602080841082141561498157634e487b7160e01b86526022600452602486fd5b81801561499557600181146149a6576149d3565b60ff198616895284890196506149d3565b60008a81526020902060005b868110156149cb5781548b8201529085019083016149b2565b505084890196505b509498975050505050505050565b6000602082840312156149f357600080fd5b8151610cff81613cf9565b60008251614a10818460208701613c6e565b919091019291505056fea2646970667358221220ae14b578eac9366b5200d90d00f539d0e961d3887b597d15704e009bdfa4e98264736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106102ad5760003560e01c80635bfe4da011610166578063a457c2d7116100d3578063d505accf1161008f578063e487c2e81161006c578063e487c2e814610965578063ec342ad01461097a578063ef867ff414610996578063f887ea40146109b657005b8063d505accf146108f7578063dd62ed3e14610917578063e086e5ec1461095d57005b8063a457c2d71461081e578063a9059cbb1461083e578063aa271e1a1461085e578063aa492ef914610897578063ab62f0e1146108b7578063b3998be0146108d757005b80637ecebe00116101225780637ecebe001461076757806382c03da5146107945780638b96412b146107a957806395d89b41146107c957806396fb3eaf146107de578063983b2d56146107fe57005b80635bfe4da0146106a65780635d1ca631146106c6578063673a2a1f146106da57806370a08231146106ef57806379cc6790146107255780637dda231e1461074557005b8063355274ea1161021c578063397b3743116101d857806347ac7d55116101b557806347ac7d551461062f5780634f189cb21461065157806357a3a31b1461066657806357ad5ff61461068657005b8063397b3743146105b357806340c10f19146105ef57806342966c681461060f57005b8063355274ea14610509578063361fef491461051e578063363bdb461461053e5780633644e5151461055e578063392e53cd14610574578063395093511461059357005b8063191c918a1161026b578063191c918a1461043357806323b872dd1461045357806325b00243146104735780633092afd51461049357806330adf81f146104b3578063313ce567146104e757005b80627ffb78146102af57806301e88208146102e657806306fdde0314610336578063095ea7b314610358578063160a79251461038857806318160ddd14610414575b005b3480156102bb57600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f257600080fd5b5061031f610301366004613c51565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102dd565b34801561034257600080fd5b5061034b6109d6565b6040516102dd9190613c9a565b34801561036457600080fd5b50610378610373366004613ccd565b610a68565b60405190151581526020016102dd565b34801561039457600080fd5b506103f56103a3366004613c51565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102dd565b34801561042057600080fd5b506002545b6040519081526020016102dd565b34801561043f57600080fd5b506102ad61044e366004613d07565b610a7e565b34801561045f57600080fd5b5061037861046e366004613d66565b610c5a565b34801561047f57600080fd5b506102ad61048e366004613c51565b610d06565b34801561049f57600080fd5b506102ad6104ae366004613c51565b610da0565b3480156104bf57600080fd5b506104257f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104f357600080fd5b5060125b60405160ff90911681526020016102dd565b34801561051557600080fd5b50600a54610425565b34801561052a57600080fd5b506102ad610539366004613dc0565b610e37565b34801561054a57600080fd5b506102ad610559366004613e06565b610eb5565b34801561056a57600080fd5b5061042560115481565b34801561058057600080fd5b50600b54600160a01b900460ff16610378565b34801561059f57600080fd5b506103786105ae366004613ccd565b611210565b3480156105bf57600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102dd565b3480156105fb57600080fd5b506102ad61060a366004613ccd565b61124c565b34801561061b57600080fd5b506102ad61062a366004613e5e565b61131d565b34801561063b57600080fd5b50610644611327565b6040516102dd9190613ebb565b34801561065d57600080fd5b506102ad611388565b34801561067257600080fd5b506102ad610681366004613c51565b61146f565b34801561069257600080fd5b506102ad6106a1366004613d66565b6115b1565b3480156106b257600080fd5b506102c96106c1366004614006565b611705565b3480156106d257600080fd5b5060016104f7565b3480156106e657600080fd5b50610644611b0a565b3480156106fb57600080fd5b5061042561070a366004613c51565b6001600160a01b031660009081526020819052604090205490565b34801561073157600080fd5b506102ad610740366004613ccd565b611b6a565b34801561075157600080fd5b5061075a611bf0565b6040516102dd9190614083565b34801561077357600080fd5b50610425610782366004613c51565b60126020526000908152604090205481565b3480156107a057600080fd5b506102ad611c65565b3480156107b557600080fd5b506104256107c43660046140db565b611cbf565b3480156107d557600080fd5b5061034b611f4f565b3480156107ea57600080fd5b506103786107f9366004613c51565b611f5e565b34801561080a57600080fd5b506102ad610819366004613c51565b611fd9565b34801561082a57600080fd5b50610378610839366004613ccd565b612070565b34801561084a57600080fd5b50610378610859366004613ccd565b612109565b34801561086a57600080fd5b50610378610879366004613c51565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156108a357600080fd5b506102ad6108b2366004613c51565b612116565b3480156108c357600080fd5b506102ad6108d2366004614146565b6121ad565b3480156108e357600080fd5b506103786108f2366004614202565b6122de565b34801561090357600080fd5b506102ad610912366004614308565b612418565b34801561092357600080fd5b50610425610932366004614376565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ad61262a565b34801561097157600080fd5b506102c961266a565b34801561098657600080fd5b50610425670de0b6b3a764000081565b3480156109a257600080fd5b506102c96109b1366004613e5e565b6126ff565b3480156109c257600080fd5b506013546102c9906001600160a01b031681565b6060600880546109e5906143af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a11906143af565b8015610a5e5780601f10610a3357610100808354040283529160200191610a5e565b820191906000526020600020905b815481529060010190602001808311610a4157829003601f168201915b5050505050905090565b6000610a75338484612729565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec91906143e4565b60200151610b155760405162461bcd60e51b8152600401610b0c90614468565b60405180910390fd5b60026007541415610b385760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050508115610bcd57610bcd8561284d565b601680546001810182556000919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a150506001600755505050565b6000610c6784848461294f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b0c565b610cf98533858403612729565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906143e4565b60200151610d945760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b1f565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e91906143e4565b60200151610e2e5760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b80565b60026007541415610e5a5760405162461bcd60e51b8152600401610b0c9061449d565b600260075560408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a1610eac81612be0565b50506001600755565b60026007541415610ed85760405162461bcd60e51b8152600401610b0c9061449d565b600260075533600090815260208190526040812054670de0b6b3a76400009190821115610f535760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610b0c565b600e5460408051338152602081018590529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000601054118015610fce5750600f546001600160a01b031615155b8015610fe45750600e546001600160a01b031615155b1561119e57601054600f54611008916001600160a01b039091169033903090612f72565b60135460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107691906144d4565b905080156110a8576110a5670de0b6b3a764000061109f83601054612fdd90919063ffffffff16565b90612fe9565b91505b600e546010546110d9916001600160a01b0316906110c69085612ff5565b600f546001600160a01b03169190613001565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061111e9086612ff5565b60405190815260200160405180910390a3811561119c57600b54600f54611152916001600160a01b03918216911684613001565b600f54600b546040518481526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b505b6111a783612be0565b6111b86111b261266a565b83612109565b6112045760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610b0c565b50506001600755505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a75918590611247908690614503565b612729565b3360009081526005602052604090205460ff166112ab5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610b0c565b600a546112c1826112bb60025490565b90613031565b111561130f5760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610b0c565b611319828261303d565b5050565b610d9d338261311c565b60606016805480602002602001604051908101604052809291908181526020018280548015610a5e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611361575050505050905090565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f5919061451b565b6001600160a01b0316336001600160a01b0316146114555760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610b0c565b61145d61326a565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff16806115005750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb91906143e4565b602001515b6115605760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610b0c565b61156981613319565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b0316331461161e5760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610b0c565b6001600160a01b0383166116855760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610b0c565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177491906143e4565b602001516117945760405162461bcd60e51b8152600401610b0c90614468565b600260075414156117b75760405162461bcd60e51b8152600401610b0c9061449d565b60026007556117c560025490565b1561181e5760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610b0c565b6118418260008151811061183457611834614538565b602002602001015161284d565b601360009054906101000a90046001600160a01b03166001600160a01b031663510f34656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b891906144d4565b846003815181106118cb576118cb614538565b602002602001015110156119615760405162461bcd60e51b815260206004820152605160248201527f455243323054656d706c6174653a2056657374696e6720706572696f6420746f60448201527f6f206c6f772e2053656520466163746f7279526f757465722e6d696e56657374606482015270696e67506572696f64496e426c6f636b7360781b608482015260a401610b0c565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061199957611999614538565b60209081029190910101516001600160a01b0390811690915260135460405163ee3bc63560e01b8152929350169063ee3bc635906119e190849089908990899060040161457e565b6020604051808303816000875af1158015611a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a24919061451b565b6014805460018101825560009182527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319166001600160a01b03841617905584519193507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9679184918691611aa557611aa5614538565b602002602001015185600181518110611ac057611ac0614538565b6020026020010151604051611af5939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a15060016007559392505050565b60606014805480602002602001604051908101604052809291908181526020018280548015610a5e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611361575050505050905090565b6000611b768333610932565b905081811015611bd45760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610b0c565b611be18333848403612729565b611beb838361311c565b505050565b60606015805480602002602001604051908101604052809291908181526020016000905b82821015611c5c576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611c14565b50505050905090565b600c546001600160a01b031633146114555760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610b0c565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e91906143e4565b60200151611d4e5760405162461bcd60e51b8152600401610b0c90614468565b60026007541415611d715760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051638244937560e01b81526001600160a01b0390911690638244937590611daa908790879087906004016145e9565b6020604051808303816000875af1158015611dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ded91906144d4565b9050600082600481518110611e0457611e04614538565b60200260200101511115611e1b57611e1b8461284d565b82600081518110611e2e57611e2e614538565b60200260200101516001600160a01b031683600181518110611e5257611e52614538565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f348058387604051611ea69291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03948516815260208101828152601580546001808201835560009290925292517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475600290940293840180546001600160a01b0319169190981617909655517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec476909101556007939093555090919050565b6060600980546109e5906143af565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf91906143e4565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906143e4565b602001516120675760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161284d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156120f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b0c565b6120ff3385858403612729565b5060019392505050565b6000610a7533848461294f565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218491906143e4565b602001516121a45760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161333b565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b91906143e4565b6020015161223b5760405162461bcd60e51b8152600401610b0c90614468565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906122a790849087908790600401614652565b600060405180830381600087803b1580156122c157600080fd5b505af11580156122d5573d6000803e3d6000fd5b50505050505050565b600b54600090600160a01b900460ff16156123555760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610b0c565b6124096123628b8d6146cc565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061240492508991508a9050614753565b613449565b9b9a5050505050505050505050565b4384101561245b5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610b0c565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876124ae836147ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161252792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612592573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906125c85750886001600160a01b0316816001600160a01b0316145b6126145760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610b0c565b61261f898989612729565b505050505050505050565b61263261266a565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610d9d573d6000803e3d6000fd5b600d546000906001600160a01b03166126ef57600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea919061451b565b905090565b50600d546001600160a01b031690565b6006818154811061270f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03831661278b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0c565b6001600160a01b0382166127ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128b75760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610b0c565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0c565b6001600160a01b038216612a155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0c565b6001600160a01b03831660009081526020819052604090205481811015612a8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b0c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612ac4908490614503565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1091815260200190565b60405180910390a35b50505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906129439042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906129439042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600081612c2460e08501856147e9565b612c316020870187613c51565b612c416040880160208901613c51565b87604001358860c00135604051602001612c609695949392919061482f565b60405160208183030381529060405280519060200120604051602001612c8792919061486d565b60408051601f19818403018152919052805160209091012090506000600182612cb6608087016060880161488f565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa158015612d0d573d6000803e3d6000fd5b5050604051601f1901519150612d2890506020850185613c51565b6001600160a01b0316816001600160a01b031614612d7f5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610b0c565b612d8f6040850160208601613c51565b6001600160a01b0316612da56020860186613c51565b6001600160a01b03167f22bdc88918efde2160206f0b5314bae23de0ae7fd1e9e7853d53178e32355a876040870135612de160e08901896147e9565b612df160808b0160608c0161488f565b8a608001358b60a001358c60c00135604051612e1397969594939291906148aa565b60405180910390a360008460400135118015612e4857506000612e3c6040860160208701613c51565b6001600160a01b031614155b8015612e6a57506000612e5e6020860186613c51565b6001600160a01b031614155b15612b195760135460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906144d4565b905060008115612f0457612f01670de0b6b3a764000061109f604089013585612fdd565b90505b6000612f14604088013583612ff5565b9050612f4933612f2760208a018a613c51565b83612f3860408c0160208d01613c51565b6001600160a01b0316929190612f72565b81156122d557600b546122d59033906001600160a01b031684612f3860408c0160208d01613c51565b6040516001600160a01b0380851660248301528316604482015260648101829052612b199085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261393b565b6000610cff82846148ed565b6000610cff828461490c565b6000610cff828461492e565b6040516001600160a01b038316602482015260448101829052611beb90849063a9059cbb60e01b90606401612fa6565b6000610cff8284614503565b6001600160a01b0382166130935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b0c565b80600260008282546130a59190614503565b90915550506001600160a01b038216600090815260208190526040812080548392906130d2908490614503565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661317c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b0c565b6001600160a01b038216600090815260208190526040902054818110156131f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b0c565b6001600160a01b038316600090815260208190526040812083830390556002805484929061321f90849061492e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b6006548110156132d0576000600560006006848154811061329057613290614538565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff1916905550806132c8816147ce565b91505061326d565b506132dd60066000613b85565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156133b55760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610b0c565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612943565b6000808460008151811061345f5761345f614538565b6020026020010151905060008560018151811061347e5761347e614538565b6020026020010151905060006001600160a01b0316826001600160a01b031614156135005760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610b0c565b6001600160a01b03811661357c5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610b0c565b8460008151811061358f5761358f614538565b6020026020010151600014156135f35760405162461bcd60e51b8152602060048201526024808201527f44617461746f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610b0c565b8460008151811061360657613606614538565b6020026020010151600a819055508760008151811061362757613627614538565b602002602001015160089080519060200190613644929190613ba3565b508760018151811061365857613658614538565b602002602001015160099080519060200190613675929190613ba3565b50600c80546001600160a01b0319166001600160a01b0384161790558551869060029081106136a6576136a6614538565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161370390889060009061183457611834614538565b60006001600160a01b03168760018151811061372157613721614538565b60200260200101516001600160a01b0316146137cb5761375a8760018151811061374d5761374d614538565b6020026020010151613319565b8660018151811061376d5761376d614538565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516137c2929190918252602082015260400190565b60405180910390a35b866002815181106137de576137de614538565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061381f5761381f614538565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061386057613860614538565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516138a39190614945565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b6000613990826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a0d9092919063ffffffff16565b805190915015611beb57808060200190518101906139ae91906149e1565b611beb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b0c565b6060613a1c8484600085613a24565b949350505050565b606082471015613a855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b0c565b843b613ad35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b0c565b600080866001600160a01b03168587604051613aef91906149fe565b60006040518083038185875af1925050503d8060008114613b2c576040519150601f19603f3d011682016040523d82523d6000602084013e613b31565b606091505b5091509150613b41828286613b4c565b979650505050505050565b60608315613b5b575081610cff565b825115613b6b5782518084602001fd5b8160405162461bcd60e51b8152600401610b0c9190613c9a565b5080546000825590600052602060002090810190610d9d9190613c27565b828054613baf906143af565b90600052602060002090601f016020900481019282613bd15760008555613c17565b82601f10613bea57805160ff1916838001178555613c17565b82800160010185558215613c17579182015b82811115613c17578251825591602001919060010190613bfc565b50613c23929150613c27565b5090565b5b80821115613c235760008155600101613c28565b6001600160a01b0381168114610d9d57600080fd5b600060208284031215613c6357600080fd5b8135610cff81613c3c565b60005b83811015613c89578181015183820152602001613c71565b83811115612b195750506000910152565b6020815260008251806020840152613cb9816040850160208701613c6e565b601f01601f19169190910160400192915050565b60008060408385031215613ce057600080fd5b8235613ceb81613c3c565b946020939093013593505050565b8015158114610d9d57600080fd5b600080600080600060a08688031215613d1f57600080fd5b8535613d2a81613c3c565b945060208601359350604086013592506060860135613d4881613cf9565b91506080860135613d5881613c3c565b809150509295509295909350565b600080600060608486031215613d7b57600080fd5b8335613d8681613c3c565b92506020840135613d9681613c3c565b929592945050506040919091013590565b60006101008284031215613dba57600080fd5b50919050565b60008060408385031215613dd357600080fd5b8235915060208301356001600160401b03811115613df057600080fd5b613dfc85828601613da7565b9150509250929050565b600080600060608486031215613e1b57600080fd5b8335613e2681613c3c565b92506020840135915060408401356001600160401b03811115613e4857600080fd5b613e5486828701613da7565b9150509250925092565b600060208284031215613e7057600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613eb05781516001600160a01b031687529582019590820190600101613e8b565b509495945050505050565b602081526000610cff6020830184613e77565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f0c57613f0c613ece565b604052919050565b60006001600160401b03821115613f2d57613f2d613ece565b5060051b60200190565b600082601f830112613f4857600080fd5b81356020613f5d613f5883613f14565b613ee4565b82815260059290921b84018101918181019086841115613f7c57600080fd5b8286015b84811015613f975780358352918301918301613f80565b509695505050505050565b600082601f830112613fb357600080fd5b81356020613fc3613f5883613f14565b82815260059290921b84018101918181019086841115613fe257600080fd5b8286015b84811015613f97578035613ff981613c3c565b8352918301918301613fe6565b60008060006060848603121561401b57600080fd5b83356001600160401b038082111561403257600080fd5b61403e87838801613f37565b9450602086013591508082111561405457600080fd5b61406087838801613f37565b9350604086013591508082111561407657600080fd5b50613e5486828701613fa2565b602080825282518282018190526000919060409081850190868401855b828110156140ce57815180516001600160a01b031685528601518685015292840192908501906001016140a0565b5091979650505050505050565b6000806000606084860312156140f057600080fd5b83356140fb81613c3c565b925060208401356001600160401b038082111561411757600080fd5b61412387838801613fa2565b9350604086013591508082111561413957600080fd5b50613e5486828701613f37565b6000806020838503121561415957600080fd5b82356001600160401b038082111561417057600080fd5b818501915085601f83011261418457600080fd5b81358181111561419357600080fd5b8660208285010111156141a557600080fd5b60209290920196919550909350505050565b60008083601f8401126141c957600080fd5b5081356001600160401b038111156141e057600080fd5b6020830191508360208260051b85010111156141fb57600080fd5b9250929050565b60008060008060008060008060008060a08b8d03121561422157600080fd5b8a356001600160401b038082111561423857600080fd5b6142448e838f016141b7565b909c509a5060208d013591508082111561425d57600080fd5b6142698e838f016141b7565b909a50985060408d013591508082111561428257600080fd5b61428e8e838f016141b7565b909850965060608d01359150808211156142a757600080fd5b6142b38e838f016141b7565b909650945060808d01359150808211156142cc57600080fd5b506142d98d828e016141b7565b915080935050809150509295989b9194979a5092959850565b803560ff8116811461430357600080fd5b919050565b600080600080600080600060e0888a03121561432357600080fd5b873561432e81613c3c565b9650602088013561433e81613c3c565b9550604088013594506060880135935061435a608089016142f2565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561438957600080fd5b823561439481613c3c565b915060208301356143a481613c3c565b809150509250929050565b600181811c908216806143c357607f821691505b60208210811415613dba57634e487b7160e01b600052602260045260246000fd5b6000608082840312156143f657600080fd5b604051608081018181106001600160401b038211171561441857614418613ece565b604052825161442681613cf9565b8152602083015161443681613cf9565b6020820152604083015161444981613cf9565b6040820152606083015161445c81613cf9565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156144e657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614516576145166144ed565b500190565b60006020828403121561452d57600080fd5b8151610cff81613c3c565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613eb057815187529582019590820190600101614562565b60008186825b60028110156145ac5781516001600160a01b0316835260209283019290910190600101614584565b50505060a060408301526145c360a083018661454e565b82810360608401526145d5818661454e565b90508281036080840152613b418185613e77565b6001600160a01b038416815260606020820181905260009061460d90830185613e77565b828103604084015261461f818561454e565b9695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b83815260406020820152600061466c604083018486614629565b95945050505050565b60006001600160401b0383111561468e5761468e613ece565b6146a1601f8401601f1916602001613ee4565b90508281528383830111156146b557600080fd5b828260208301376000602084830101529392505050565b60006146da613f5884613f14565b80848252602080830192508560051b8501368111156146f857600080fd5b855b818110156147475780356001600160401b038111156147195760008081fd5b870136601f82011261472b5760008081fd5b614739368235868401614675565b8652509382019382016146fa565b50919695505050505050565b6000614761613f5884613f14565b80848252602080830192508560051b85013681111561477f57600080fd5b855b818110156147475780356001600160401b038111156147a05760008081fd5b870136601f8201126147b25760008081fd5b6147c0368235868401614675565b865250938201938201614781565b60006000198214156147e2576147e26144ed565b5060010190565b6000808335601e1984360301811261480057600080fd5b8301803591506001600160401b0382111561481a57600080fd5b6020019150368190038213156141fb57600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b6000835161487f818460208801613c6e565b9190910191825250602001919050565b6000602082840312156148a157600080fd5b610cff826142f2565b87815260c0602082015260006148c460c08301888a614629565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b6000816000190483118215151615614907576149076144ed565b500290565b60008261492957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614940576149406144ed565b500390565b600080835481600182811c91508083168061496157607f831692505b602080841082141561498157634e487b7160e01b86526022600452602486fd5b81801561499557600181146149a6576149d3565b60ff198616895284890196506149d3565b60008a81526020902060005b868110156149cb5781548b8201529085019083016149b2565b505084890196505b509498975050505050505050565b6000602082840312156149f357600080fd5b8151610cff81613cf9565b60008251614a10818460208701613c6e565b919091019291505056fea2646970667358221220ae14b578eac9366b5200d90d00f539d0e961d3887b597d15704e009bdfa4e98264736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/abis/ERC20TemplateEnterprise.json b/abis/ERC20TemplateEnterprise.json index 3351057..b6c5349 100644 --- a/abis/ERC20TemplateEnterprise.json +++ b/abis/ERC20TemplateEnterprise.json @@ -90,6 +90,31 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + } + ], + "name": "BuyAndOrder", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -115,31 +140,6 @@ "name": "CleanedPermissions", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "name": "ConsumeMarketFees", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -178,6 +178,19 @@ "name": "MinterProposed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "dispenserContract", + "type": "address" + } + ], + "name": "NewDispenser", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -188,10 +201,22 @@ "type": "bytes32" }, { - "indexed": false, + "indexed": true, "internalType": "address", "name": "owner", "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "exchangeContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" } ], "name": "NewFixedRate", @@ -233,24 +258,30 @@ "inputs": [ { "indexed": false, - "internalType": "address", - "name": "poolAddress", - "type": "address" + "internalType": "bytes32", + "name": "orderTxId", + "type": "bytes32" }, { "indexed": false, "internalType": "address", - "name": "ssContract", + "name": "caller", "type": "address" }, { "indexed": false, - "internalType": "address", - "name": "basetokenAddress", - "type": "address" + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "number", + "type": "uint256" } ], - "name": "NewPool", + "name": "OrderReused", "type": "event" }, { @@ -277,7 +308,7 @@ { "indexed": false, "internalType": "uint256", - "name": "serviceId", + "name": "serviceIndex", "type": "uint256" }, { @@ -292,12 +323,6 @@ "name": "publishMarketAddress", "type": "address" }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeMarketAddress", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -308,6 +333,61 @@ "name": "OrderStarted", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + } + ], + "name": "ProviderFees", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -333,6 +413,37 @@ "name": "PublishMarketFees", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "PublishMarketFeeAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "PublishMarketFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "PublishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "PublishMarketFeesChanged", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -437,19 +548,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "BASE_COMMUNITY_FEE_PERCENTAGE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -630,28 +728,55 @@ }, { "internalType": "uint256", - "name": "amount", + "name": "serviceIndex", "type": "uint256" }, { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC20TemplateEnterprise.providerFees", + "name": "_providerFees", + "type": "tuple" } ], "internalType": "struct ERC20TemplateEnterprise.OrderParams", @@ -680,28 +805,55 @@ }, { "internalType": "uint256", - "name": "amount", + "name": "serviceIndex", "type": "uint256" }, { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC20TemplateEnterprise.providerFees", + "name": "_providerFees", + "type": "tuple" } ], "internalType": "struct ERC20TemplateEnterprise.OrderParams", @@ -724,6 +876,16 @@ "internalType": "uint256", "name": "maxBaseTokenAmount", "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapMarketFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "marketFeeAddress", + "type": "address" } ], "internalType": "struct ERC20TemplateEnterprise.FreParams", @@ -784,6 +946,11 @@ "internalType": "bool", "name": "withMint", "type": "bool" + }, + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" } ], "name": "createDispenser", @@ -857,6 +1024,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "getDispensers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getERC721Address", @@ -870,6 +1050,31 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getFixedRates", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "internalType": "struct ERC20TemplateEnterprise.fixedRate[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getId", @@ -896,6 +1101,37 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getPermissions", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "internalType": "struct ERC20Roles.RolesERC20", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getPublishingMarketFee", @@ -982,6 +1218,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isERC20Deployer", + "outputs": [ + { + "internalType": "bool", + "name": "deployer", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "isInitialized", @@ -1157,6 +1412,66 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "orderTxId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC20TemplateEnterprise.providerFees", + "name": "_providerFees", + "type": "tuple" + } + ], + "name": "reuseOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "router", @@ -1228,28 +1543,55 @@ }, { "internalType": "uint256", - "name": "amount", + "name": "serviceIndex", "type": "uint256" }, { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC20TemplateEnterprise.providerFees", + "name": "_providerFees", + "type": "tuple" } ], "name": "startOrder", @@ -1344,8 +1686,8 @@ "type": "function" } ], - "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614692806200017f6000396000f3fe6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613b18565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b6040516102979190614365565b34801561031e57600080fd5b5061033261032d366004613ddd565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613b8b565b61093d565b34801561038d57600080fd5b5061026761039c366004613b18565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613b18565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004614053565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613ddd565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b0390811693169190614277565b3480156104de57600080fd5b506102676104ed366004613ddd565b610c89565b3480156104fe57600080fd5b5061026761050d36600461418c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613b18565b610e5b565b34801561055357600080fd5b50610267610562366004613b8b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613b18565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613ddd565b611059565b3480156105dd57600080fd5b506103536105ec366004613b18565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613d00565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613b18565b61132c565b34801561067457600080fd5b50610332610683366004613ddd565b6113d7565b34801561069457600080fd5b506103326106a3366004613ddd565b611470565b3480156106b457600080fd5b506103326106c3366004613b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613b18565b61147d565b34801561070d57600080fd5b5061026761071c366004613fe1565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613eba565b611683565b34801561076257600080fd5b50610267610771366004614080565b6117bd565b34801561078257600080fd5b50610267610791366004613c89565b611c43565b3480156107a257600080fd5b506103536107b1366004613b52565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461418c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613e70565b611f63565b34801561088157600080fd5b50610267610890366004613e09565b61209f565b6060600780546108a4906145a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108d0906145a1565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190614107565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb906143ba565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190614107565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb906143ba565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c84908690614444565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612e86565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612e99565b610a973382612f78565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190613b35565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e496130c6565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190614107565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81613175565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612f78565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190614107565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb906143ba565b30836003815181106111f0576111f061460d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161429b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613fc8565b905060008260048151811061129a5761129a61460d565b602002602001015111156112b1576112b184613197565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661460d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a4906145a1565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614107565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613197565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614107565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613291565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190614107565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb906143ba565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906116369084908790879060040161432f565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a764000061445c565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d614521565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614495565b61339f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613bcc565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906141a5565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f290339030908690600401614277565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613fab565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613fab565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd9836145dc565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613b35565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190614107565b6020015115156001146120055760405162461bcd60e51b81526004016109cb906143ba565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613197565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e908490614444565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f541180156125625750600e546001600160a01b031615155b80156125785750600d546001600160a01b031615155b156127d157600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd916125b29133913091600401614277565b602060405180830381600087803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126049190613fab565b61265c5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461266a90606461389e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061269690856138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190613fab565b61277a5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906127bf90856138aa565b60405190815260200160405180910390a35b6000831180156127e957506001600160a01b03841615155b80156127fd57506001600160a01b03851615155b15612a20576040516323b872dd60e01b81526001600160a01b038516906323b872dd9061283290339030908890600401614277565b602060405180830381600087803b15801561284c57600080fd5b505af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128849190613fab565b6128d05760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b6128db83606461389e565b91506001600160a01b03841663a9059cbb866128f786866138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613fab565b6129d55760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d1612a0e86866138aa565b60405190815260200160405180910390a35b600081118015612a305750600082115b8015612a495750600e546001600160a01b038581169116145b8015612a5d57506001600160a01b03841615155b15612be557600a546001600160a01b038086169163a9059cbb9116612a828486612e86565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b009190613fab565b612b585760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a3612e73565b600081118015612bff5750600e546001600160a01b031615155b15612d3157600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613fab565b612ce75760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b600082118015612d4957506001600160a01b03841615155b15612e7357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613fab565b612e2e5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b612e7c87610d5b565b5050505050505050565b6000612e928284614444565b9392505050565b6001600160a01b038216612eef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612f019190614444565b90915550506001600160a01b03821660009081526020819052604081208054839290612f2e908490614444565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612fd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b0382166000908152602081905260409020548181101561304c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b038316600090815260208190526040812083830390556002805484929061307b90849061447e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b60065481101561312c57600060056000600684815481106130ec576130ec61460d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080613124816145dc565b9150506130c9565b50613139600660006138b6565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156132015760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561330b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106133b5576133b561460d565b602002602001015190506000856001815181106133d4576133d461460d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156134565760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166134d25760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106134e5576134e561460d565b6020026020010151600014156135495760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b8460008151811061355c5761355c61460d565b60200260200101516009819055508760008151811061357d5761357d61460d565b60200260200101516007908051906020019061359a9291906138d4565b50876001815181106135ae576135ae61460d565b6020026020010151600890805190602001906135cb9291906138d4565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106135fc576135fc61460d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516136669088906000906136595761365961460d565b6020026020010151613197565b60006001600160a01b0316876001815181106136845761368461460d565b60200260200101516001600160a01b03161461372e576136bd876001815181106136b0576136b061460d565b6020026020010151613175565b866001815181106136d0576136d061460d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051613725929190918252602082015260400190565b60405180910390a35b866002815181106137415761374161460d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106137825761378261460d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106137c3576137c361460d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161380691906141db565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612e92828461445c565b6000612e92828461447e565b5080546000825590600052602060002090810190610a979190613958565b8280546138e0906145a1565b90600052602060002090601f0160209004810192826139025760008555613948565b82601f1061391b57805160ff1916838001178555613948565b82800160010185558215613948579182015b8281111561394857825182559160200191906001019061392d565b50613954929150613958565b5090565b5b808211156139545760008155600101613959565b600067ffffffffffffffff83111561398757613987614623565b61399a601f8401601f19166020016143ef565b90508281528383830111156139ae57600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126139d757600080fd5b50813567ffffffffffffffff8111156139ef57600080fd5b6020830191508360208260051b8501011115613a0a57600080fd5b9250929050565b600082601f830112613a2257600080fd5b81356020613a37613a3283614420565b6143ef565b80838252828201915082860187848660051b8901011115613a5757600080fd5b60005b85811015613a7657813584529284019290840190600101613a5a565b5090979650505050505050565b600060c08284031215613a9557600080fd5b60405160c0810181811067ffffffffffffffff82111715613ab857613ab8614623565b6040529050808235613ac981614639565b8082525060208301356020820152604083013560408201526060830135613aef81614639565b60608201526080830135613b0281614639565b608082015260a092830135920191909152919050565b600060208284031215613b2a57600080fd5b8135612e9281614639565b600060208284031215613b4757600080fd5b8151612e9281614639565b60008060408385031215613b6557600080fd5b8235613b7081614639565b91506020830135613b8081614639565b809150509250929050565b600080600060608486031215613ba057600080fd5b8335613bab81614639565b92506020840135613bbb81614639565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613bef57600080fd5b8c51613bfa81614639565b60208e0151909c50613c0b81614639565b60408e015160608f0151919c509a50613c2381614639565b8099505060808d0151975060a08d0151965060c08d0151613c438161464e565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613c758161464e565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613ca457600080fd5b8735613caf81614639565b96506020880135613cbf81614639565b95506040880135945060608801359350608088013560ff81168114613ce357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613d1557600080fd5b8335613d2081614639565b925060208481013567ffffffffffffffff80821115613d3e57600080fd5b818701915087601f830112613d5257600080fd5b8135613d60613a3282614420565b8082825285820191508585018b878560051b8801011115613d8057600080fd5b600095505b83861015613dac578035613d9881614639565b835260019590950194918601918601613d85565b50965050506040870135925080831115613dc557600080fd5b5050613dd386828701613a11565b9150509250925092565b60008060408385031215613df057600080fd5b8235613dfb81614639565b946020939093013593505050565b60008060008060008060c08789031215613e2257600080fd5b8635613e2d81614639565b955060208701359450604087013593506060870135613e4b81614639565b92506080870135613e5b81614639565b8092505060a087013590509295509295509295565b60008060008060808587031215613e8657600080fd5b8435613e9181614639565b935060208501359250604085013591506060850135613eaf8161464e565b939692955090935050565b60008060008060008060008060008060a08b8d031215613ed957600080fd5b8a3567ffffffffffffffff80821115613ef157600080fd5b613efd8e838f016139c5565b909c509a5060208d0135915080821115613f1657600080fd5b613f228e838f016139c5565b909a50985060408d0135915080821115613f3b57600080fd5b613f478e838f016139c5565b909850965060608d0135915080821115613f6057600080fd5b613f6c8e838f016139c5565b909650945060808d0135915080821115613f8557600080fd5b50613f928d828e016139c5565b915080935050809150509295989b9194979a5092959850565b600060208284031215613fbd57600080fd5b8151612e928161464e565b600060208284031215613fda57600080fd5b5051919050565b60008060208385031215613ff457600080fd5b823567ffffffffffffffff8082111561400c57600080fd5b818501915085601f83011261402057600080fd5b81358181111561402f57600080fd5b86602082850101111561404157600080fd5b60209290920196919550909350505050565b60008060e0838503121561406657600080fd5b6140708484613a83565b915060c0830135613b8081614639565b60008082840361012081121561409557600080fd5b61409f8585613a83565b9250606060bf19820112156140b357600080fd5b506040516060810181811067ffffffffffffffff821117156140d7576140d7614623565b60405260c08401356140e881614639565b815260e084013560208201526101009093013560408401525092909150565b60006080828403121561411957600080fd5b6040516080810181811067ffffffffffffffff8211171561413c5761413c614623565b604052825161414a8161464e565b8152602083015161415a8161464e565b6020820152604083015161416d8161464e565b604082015260608301516141808161464e565b60608201529392505050565b60006020828403121561419e57600080fd5b5035919050565b600080600080608085870312156141bb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c9150808316806141f757607f831692505b602080841082141561421757634e487b7160e01b86526022600452602486fd5b81801561422b576001811461423c57614269565b60ff19861689528489019650614269565b60008a81526020902060005b868110156142615781548b820152908501908301614248565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156142e95785518516835294830194918301916001016142cb565b5050858103604087015286518082529082019350915080860160005b8381101561432157815185529382019390820190600101614305565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b8181101561439257858101830151858201604001528201614376565b818111156143a4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561441857614418614623565b604052919050565b600067ffffffffffffffff82111561443a5761443a614623565b5060051b60200190565b60008219821115614457576144576145f7565b500190565b60008261447957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614490576144906145f7565b500390565b60006144a3613a3284614420565b808482526020808301925084368760051b870111156144c157600080fd5b60005b8781101561451557813567ffffffffffffffff8111156144e357600080fd5b870136601f8201126144f457600080fd5b61450236823586840161396d565b86525093820193908201906001016144c4565b50919695505050505050565b600061452f613a3284614420565b808482526020808301925084368760051b8701111561454d57600080fd5b60005b8781101561451557813567ffffffffffffffff81111561456f57600080fd5b870136601f82011261458057600080fd5b61458e36823586840161396d565b8652509382019390820190600101614550565b600181811c908216806145b557607f821691505b602082108114156145d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145f0576145f06145f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212203fefaefebd60ab2e4bb6f9429e228753bf3ba50cd41f42191f8fac1472e7d4b664736f6c63430008070033", - "deployedBytecode": "0x6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613b18565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b6040516102979190614365565b34801561031e57600080fd5b5061033261032d366004613ddd565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613b8b565b61093d565b34801561038d57600080fd5b5061026761039c366004613b18565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613b18565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004614053565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613ddd565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b0390811693169190614277565b3480156104de57600080fd5b506102676104ed366004613ddd565b610c89565b3480156104fe57600080fd5b5061026761050d36600461418c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613b18565b610e5b565b34801561055357600080fd5b50610267610562366004613b8b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613b18565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613ddd565b611059565b3480156105dd57600080fd5b506103536105ec366004613b18565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613d00565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613b18565b61132c565b34801561067457600080fd5b50610332610683366004613ddd565b6113d7565b34801561069457600080fd5b506103326106a3366004613ddd565b611470565b3480156106b457600080fd5b506103326106c3366004613b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613b18565b61147d565b34801561070d57600080fd5b5061026761071c366004613fe1565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613eba565b611683565b34801561076257600080fd5b50610267610771366004614080565b6117bd565b34801561078257600080fd5b50610267610791366004613c89565b611c43565b3480156107a257600080fd5b506103536107b1366004613b52565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461418c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613e70565b611f63565b34801561088157600080fd5b50610267610890366004613e09565b61209f565b6060600780546108a4906145a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108d0906145a1565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190614107565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb906143ba565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190614107565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb906143ba565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c84908690614444565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612e86565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612e99565b610a973382612f78565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190613b35565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e496130c6565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190614107565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81613175565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612f78565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190614107565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb906143ba565b30836003815181106111f0576111f061460d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161429b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613fc8565b905060008260048151811061129a5761129a61460d565b602002602001015111156112b1576112b184613197565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661460d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a4906145a1565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614107565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613197565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614107565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613291565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190614107565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb906143ba565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906116369084908790879060040161432f565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a764000061445c565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d614521565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614495565b61339f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613bcc565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906141a5565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f290339030908690600401614277565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613fab565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613fab565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd9836145dc565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613b35565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190614107565b6020015115156001146120055760405162461bcd60e51b81526004016109cb906143ba565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613197565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e908490614444565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f541180156125625750600e546001600160a01b031615155b80156125785750600d546001600160a01b031615155b156127d157600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd916125b29133913091600401614277565b602060405180830381600087803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126049190613fab565b61265c5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461266a90606461389e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061269690856138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190613fab565b61277a5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906127bf90856138aa565b60405190815260200160405180910390a35b6000831180156127e957506001600160a01b03841615155b80156127fd57506001600160a01b03851615155b15612a20576040516323b872dd60e01b81526001600160a01b038516906323b872dd9061283290339030908890600401614277565b602060405180830381600087803b15801561284c57600080fd5b505af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128849190613fab565b6128d05760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b6128db83606461389e565b91506001600160a01b03841663a9059cbb866128f786866138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613fab565b6129d55760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d1612a0e86866138aa565b60405190815260200160405180910390a35b600081118015612a305750600082115b8015612a495750600e546001600160a01b038581169116145b8015612a5d57506001600160a01b03841615155b15612be557600a546001600160a01b038086169163a9059cbb9116612a828486612e86565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b009190613fab565b612b585760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a3612e73565b600081118015612bff5750600e546001600160a01b031615155b15612d3157600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613fab565b612ce75760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b600082118015612d4957506001600160a01b03841615155b15612e7357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613fab565b612e2e5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b612e7c87610d5b565b5050505050505050565b6000612e928284614444565b9392505050565b6001600160a01b038216612eef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612f019190614444565b90915550506001600160a01b03821660009081526020819052604081208054839290612f2e908490614444565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612fd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b0382166000908152602081905260409020548181101561304c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b038316600090815260208190526040812083830390556002805484929061307b90849061447e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b60065481101561312c57600060056000600684815481106130ec576130ec61460d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080613124816145dc565b9150506130c9565b50613139600660006138b6565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156132015760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561330b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106133b5576133b561460d565b602002602001015190506000856001815181106133d4576133d461460d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156134565760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166134d25760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106134e5576134e561460d565b6020026020010151600014156135495760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b8460008151811061355c5761355c61460d565b60200260200101516009819055508760008151811061357d5761357d61460d565b60200260200101516007908051906020019061359a9291906138d4565b50876001815181106135ae576135ae61460d565b6020026020010151600890805190602001906135cb9291906138d4565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106135fc576135fc61460d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516136669088906000906136595761365961460d565b6020026020010151613197565b60006001600160a01b0316876001815181106136845761368461460d565b60200260200101516001600160a01b03161461372e576136bd876001815181106136b0576136b061460d565b6020026020010151613175565b866001815181106136d0576136d061460d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051613725929190918252602082015260400190565b60405180910390a35b866002815181106137415761374161460d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106137825761378261460d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106137c3576137c361460d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161380691906141db565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612e92828461445c565b6000612e92828461447e565b5080546000825590600052602060002090810190610a979190613958565b8280546138e0906145a1565b90600052602060002090601f0160209004810192826139025760008555613948565b82601f1061391b57805160ff1916838001178555613948565b82800160010185558215613948579182015b8281111561394857825182559160200191906001019061392d565b50613954929150613958565b5090565b5b808211156139545760008155600101613959565b600067ffffffffffffffff83111561398757613987614623565b61399a601f8401601f19166020016143ef565b90508281528383830111156139ae57600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126139d757600080fd5b50813567ffffffffffffffff8111156139ef57600080fd5b6020830191508360208260051b8501011115613a0a57600080fd5b9250929050565b600082601f830112613a2257600080fd5b81356020613a37613a3283614420565b6143ef565b80838252828201915082860187848660051b8901011115613a5757600080fd5b60005b85811015613a7657813584529284019290840190600101613a5a565b5090979650505050505050565b600060c08284031215613a9557600080fd5b60405160c0810181811067ffffffffffffffff82111715613ab857613ab8614623565b6040529050808235613ac981614639565b8082525060208301356020820152604083013560408201526060830135613aef81614639565b60608201526080830135613b0281614639565b608082015260a092830135920191909152919050565b600060208284031215613b2a57600080fd5b8135612e9281614639565b600060208284031215613b4757600080fd5b8151612e9281614639565b60008060408385031215613b6557600080fd5b8235613b7081614639565b91506020830135613b8081614639565b809150509250929050565b600080600060608486031215613ba057600080fd5b8335613bab81614639565b92506020840135613bbb81614639565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613bef57600080fd5b8c51613bfa81614639565b60208e0151909c50613c0b81614639565b60408e015160608f0151919c509a50613c2381614639565b8099505060808d0151975060a08d0151965060c08d0151613c438161464e565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613c758161464e565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613ca457600080fd5b8735613caf81614639565b96506020880135613cbf81614639565b95506040880135945060608801359350608088013560ff81168114613ce357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613d1557600080fd5b8335613d2081614639565b925060208481013567ffffffffffffffff80821115613d3e57600080fd5b818701915087601f830112613d5257600080fd5b8135613d60613a3282614420565b8082825285820191508585018b878560051b8801011115613d8057600080fd5b600095505b83861015613dac578035613d9881614639565b835260019590950194918601918601613d85565b50965050506040870135925080831115613dc557600080fd5b5050613dd386828701613a11565b9150509250925092565b60008060408385031215613df057600080fd5b8235613dfb81614639565b946020939093013593505050565b60008060008060008060c08789031215613e2257600080fd5b8635613e2d81614639565b955060208701359450604087013593506060870135613e4b81614639565b92506080870135613e5b81614639565b8092505060a087013590509295509295509295565b60008060008060808587031215613e8657600080fd5b8435613e9181614639565b935060208501359250604085013591506060850135613eaf8161464e565b939692955090935050565b60008060008060008060008060008060a08b8d031215613ed957600080fd5b8a3567ffffffffffffffff80821115613ef157600080fd5b613efd8e838f016139c5565b909c509a5060208d0135915080821115613f1657600080fd5b613f228e838f016139c5565b909a50985060408d0135915080821115613f3b57600080fd5b613f478e838f016139c5565b909850965060608d0135915080821115613f6057600080fd5b613f6c8e838f016139c5565b909650945060808d0135915080821115613f8557600080fd5b50613f928d828e016139c5565b915080935050809150509295989b9194979a5092959850565b600060208284031215613fbd57600080fd5b8151612e928161464e565b600060208284031215613fda57600080fd5b5051919050565b60008060208385031215613ff457600080fd5b823567ffffffffffffffff8082111561400c57600080fd5b818501915085601f83011261402057600080fd5b81358181111561402f57600080fd5b86602082850101111561404157600080fd5b60209290920196919550909350505050565b60008060e0838503121561406657600080fd5b6140708484613a83565b915060c0830135613b8081614639565b60008082840361012081121561409557600080fd5b61409f8585613a83565b9250606060bf19820112156140b357600080fd5b506040516060810181811067ffffffffffffffff821117156140d7576140d7614623565b60405260c08401356140e881614639565b815260e084013560208201526101009093013560408401525092909150565b60006080828403121561411957600080fd5b6040516080810181811067ffffffffffffffff8211171561413c5761413c614623565b604052825161414a8161464e565b8152602083015161415a8161464e565b6020820152604083015161416d8161464e565b604082015260608301516141808161464e565b60608201529392505050565b60006020828403121561419e57600080fd5b5035919050565b600080600080608085870312156141bb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c9150808316806141f757607f831692505b602080841082141561421757634e487b7160e01b86526022600452602486fd5b81801561422b576001811461423c57614269565b60ff19861689528489019650614269565b60008a81526020902060005b868110156142615781548b820152908501908301614248565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156142e95785518516835294830194918301916001016142cb565b5050858103604087015286518082529082019350915080860160005b8381101561432157815185529382019390820190600101614305565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b8181101561439257858101830151858201604001528201614376565b818111156143a4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561441857614418614623565b604052919050565b600067ffffffffffffffff82111561443a5761443a614623565b5060051b60200190565b60008219821115614457576144576145f7565b500190565b60008261447957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614490576144906145f7565b500390565b60006144a3613a3284614420565b808482526020808301925084368760051b870111156144c157600080fd5b60005b8781101561451557813567ffffffffffffffff8111156144e357600080fd5b870136601f8201126144f457600080fd5b61450236823586840161396d565b86525093820193908201906001016144c4565b50919695505050505050565b600061452f613a3284614420565b808482526020808301925084368760051b8701111561454d57600080fd5b60005b8781101561451557813567ffffffffffffffff81111561456f57600080fd5b870136601f82011261458057600080fd5b61458e36823586840161396d565b8652509382019390820190600101614550565b600181811c908216806145b557607f821691505b602082108114156145d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145f0576145f06145f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212203fefaefebd60ab2e4bb6f9429e228753bf3ba50cd41f42191f8fac1472e7d4b664736f6c63430008070033", + "bytecode": "0x6080604052600b805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d9160039162000091565b5080516200008390600490602084019062000091565b505060016007555062000174565b8280546200009f9062000137565b90600052602060002090601f016020900481019282620000c357600085556200010e565b82601f10620000de57805160ff19168380011785556200010e565b828001600101855582156200010e579182015b828111156200010e578251825591602001919060010190620000f1565b506200011c92915062000120565b5090565b5b808211156200011c576000815560010162000121565b600181811c908216806200014c57607f821691505b602082108114156200016e57634e487b7160e01b600052602260045260246000fd5b50919050565b614c2e80620001846000396000f3fe6080604052600436106102ad5760003560e01c806357ad5ff611610166578063a9059cbb116100d3578063dd62ed3e1161008f578063e89b86651161006c578063e89b866514610965578063ec342ad014610985578063ef867ff4146109a1578063f887ea40146109c157005b8063dd62ed3e14610902578063e086e5ec14610948578063e487c2e81461095057005b8063a9059cbb14610829578063aa271e1a14610849578063aa492ef914610882578063ab62f0e1146108a2578063b3998be0146108c2578063d505accf146108e257005b806382c03da51161012257806382c03da51461077f5780638b96412b1461079457806395d89b41146107b457806396fb3eaf146107c9578063983b2d56146107e9578063a457c2d71461080957005b806357ad5ff6146106a65780635d1ca631146106c657806370a08231146106da57806379cc6790146107105780637dda231e146107305780637ecebe001461075257005b8063313ce5671161021c57806339509351116101d857806342966c68116101b557806342966c681461062f57806347ac7d551461064f5780634f189cb21461067157806357a3a31b1461068657005b806339509351146105b3578063397b3743146105d357806340c10f191461060f57005b8063313ce56714610507578063355274ea14610529578063361fef491461053e578063363bdb461461055e5780633644e5151461057e578063392e53cd1461059457005b806318160ddd1161026b57806318160ddd14610434578063191c918a1461045357806323b872dd1461047357806325b00243146104935780633092afd5146104b357806330adf81f146104d357005b80627ffb78146102af57806301e88208146102e65780630269ae111461033657806306fdde0314610356578063095ea7b314610378578063160a7925146103a8575b005b3480156102bb57600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f257600080fd5b5061031f610301366004613d6b565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102dd565b34801561034257600080fd5b506102ad610351366004613da0565b6109e1565b34801561036257600080fd5b5061036b610e05565b6040516102dd9190613e25565b34801561038457600080fd5b50610398610393366004613e58565b610e97565b60405190151581526020016102dd565b3480156103b457600080fd5b506104156103c3366004613d6b565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102dd565b34801561044057600080fd5b506002545b6040519081526020016102dd565b34801561045f57600080fd5b506102ad61046e366004613e92565b610ead565b34801561047f57600080fd5b5061039861048e366004613ef1565b61107f565b34801561049f57600080fd5b506102ad6104ae366004613d6b565b61112b565b3480156104bf57600080fd5b506102ad6104ce366004613d6b565b6111c5565b3480156104df57600080fd5b506104457f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561051357600080fd5b5060125b60405160ff90911681526020016102dd565b34801561053557600080fd5b50600a54610445565b34801561054a57600080fd5b506102ad610559366004613f45565b61125c565b34801561056a57600080fd5b506102ad610579366004613f8b565b6112ad565b34801561058a57600080fd5b5061044560115481565b3480156105a057600080fd5b50600b54600160a01b900460ff16610398565b3480156105bf57600080fd5b506103986105ce366004613e58565b611587565b3480156105df57600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102dd565b34801561061b57600080fd5b506102ad61062a366004613e58565b6115c3565b34801561063b57600080fd5b506102ad61064a366004613fe3565b611690565b34801561065b57600080fd5b5061066461169a565b6040516102dd9190614040565b34801561067d57600080fd5b506102ad6116fb565b34801561069257600080fd5b506102ad6106a1366004613d6b565b6117e2565b3480156106b257600080fd5b506102ad6106c1366004613ef1565b611924565b3480156106d257600080fd5b506002610517565b3480156106e657600080fd5b506104456106f5366004613d6b565b6001600160a01b031660009081526020819052604090205490565b34801561071c57600080fd5b506102ad61072b366004613e58565b611a78565b34801561073c57600080fd5b50610745611afe565b6040516102dd9190614053565b34801561075e57600080fd5b5061044561076d366004613d6b565b60126020526000908152604090205481565b34801561078b57600080fd5b506102ad611b73565b3480156107a057600080fd5b506104456107af36600461417f565b611bcd565b3480156107c057600080fd5b5061036b611e81565b3480156107d557600080fd5b506103986107e4366004613d6b565b611e90565b3480156107f557600080fd5b506102ad610804366004613d6b565b611f0b565b34801561081557600080fd5b50610398610824366004613e58565b611fa2565b34801561083557600080fd5b50610398610844366004613e58565b61203b565b34801561085557600080fd5b50610398610864366004613d6b565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561088e57600080fd5b506102ad61089d366004613d6b565b612048565b3480156108ae57600080fd5b506102ad6108bd36600461424a565b6120df565b3480156108ce57600080fd5b506103986108dd366004614306565b612210565b3480156108ee57600080fd5b506102ad6108fd36600461440c565b61234a565b34801561090e57600080fd5b5061044561091d36600461447a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ad61255c565b34801561095c57600080fd5b506102c961259c565b34801561097157600080fd5b506102ad6109803660046144b3565b612631565b34801561099157600080fd5b50610445670de0b6b3a764000081565b3480156109ad57600080fd5b506102c96109bc366004613fe3565b612756565b3480156109cd57600080fd5b506013546102c9906001600160a01b031681565b60026007541415610a0d5760405162461bcd60e51b8152600401610a04906144f9565b60405180910390fd5b6002600755600080610a226020840184613d6b565b604051634c87087d60e01b8152602085013560048201526001600160a01b039190911690634c87087d9060240161018060405180830381865afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190614530565b5050505050505050935050925050306001600160a01b0316826001600160a01b031614610b105760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b6064820152608401610a04565b600080610b206020860186613d6b565b60405163c99733a760e01b815260208701356004820152670de0b6b3a764000060248201526001600160a01b03919091169063c99733a790604401608060405180830381865afa158015610b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9c91906145ed565b5050915091508460400135821115610c065760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610a04565b6000670de0b6b3a7640000610c1f606088013584614639565b610c299190614658565b9050610c35818461467a565b9250610c4c6001600160a01b038516333086612780565b610c6d610c5c6020880188613d6b565b6001600160a01b03861690856127f1565b610c7a6020870187613d6b565b60405163412dae6b60e11b815260208801356004820152670de0b6b3a76400006024820152604481018590526001600160a01b03919091169063825b5cd690606401600060405180830381600087803b158015610cd657600080fd5b505af1158015610cea573d6000803e3d6000fd5b505030600090815260208190526040902054670de0b6b3a7640000925090501015610d575760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d20466978656452617465006044820152606401610a04565b610d6a3033670de0b6b3a76400006128a3565b610d8c610d7a6020890189613d6b565b602089013561057960408b018b614692565b8015610db657610db6610da560a0880160808901613d6b565b6001600160a01b0386169083612a71565b60408051338152602081018590529081018290527fe89458a7527f4bf466ab18794ab8b1ca208b478483a1a87bcf0d976d421b4aff9060600160405180910390a1505060016007555050505050565b606060088054610e14906146b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e40906146b2565b8015610e8d5780601f10610e6257610100808354040283529160200191610e8d565b820191906000526020600020905b815481529060010190602001808311610e7057829003601f168201915b5050505050905090565b6000610ea4338484612aa1565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b91906146e7565b60200151610f3b5760405162461bcd60e51b8152600401610a049061476b565b60026007541415610f5e5760405162461bcd60e51b8152600401610a04906144f9565b6002600755601354604051636b14d00560e11b81526001600160a01b0387811660048301523060248301819052604483018890526064830187905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b158015610fcb57600080fd5b505af1158015610fdf573d6000803e3d6000fd5b505050508115610ff257610ff285612bc5565b601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a150506001600755505050565b600061108c8484846128a3565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156111115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a04565b61111e8533858403612aa1565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119991906146e7565b602001516111b95760405162461bcd60e51b8152600401610a049061476b565b6111c281612cc7565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af115801561120f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123391906146e7565b602001516112535760405162461bcd60e51b8152600401610a049061476b565b6111c281612d28565b60408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a16112a981612d88565b5050565b33600090815260208190526040812054670de0b6b3a764000091908211156113235760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610a04565b600e5460408051338152602081018590529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a3600060105411801561139e5750600f546001600160a01b031615155b80156113b45750600e546001600160a01b031615155b1561156e57601054600f546113d8916001600160a01b039091169033903090612780565b60135460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144691906147a0565b9050801561147857611475670de0b6b3a764000061146f8360105461311a90919063ffffffff16565b90613126565b91505b600e546010546114a9916001600160a01b0316906114969085613132565b600f546001600160a01b03169190612a71565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906114ee9086613132565b60405190815260200160405180910390a3811561156c57600b54600f54611522916001600160a01b03918216911684612a71565b600f54600b546040518481526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b505b61157783612d88565b61158082611690565b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ea49185906115be90869061467a565b612aa1565b3360009081526005602052604090205460ff166116225760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610a04565b600a546116388261163260025490565b9061313e565b11156116865760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610a04565b6112a9828261314a565b6111c23382613229565b60606015805480602002602001604051908101604052809291908181526020018280548015610e8d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116d4575050505050905090565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015611744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176891906147b9565b6001600160a01b0316336001600160a01b0316146117c85760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610a04565b6117d0613377565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff16806118735750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af115801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e91906146e7565b602001515b6118d35760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610a04565b6118dc81613426565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b031633146119915760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610a04565b6001600160a01b0383166119f85760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610a04565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b6000611a84833361091d565b905081811015611ae25760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610a04565b611aef8333848403612aa1565b611af98383613229565b505050565b60606014805480602002602001604051908101604052809291908181526020016000905b82821015611b6a576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611b22565b50505050905090565b600c546001600160a01b031633146117c85760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610a04565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611c18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3c91906146e7565b60200151611c5c5760405162461bcd60e51b8152600401610a049061476b565b60026007541415611c7f5760405162461bcd60e51b8152600401610a04906144f9565b60026007819055503083600381518110611c9b57611c9b6147d6565b6001600160a01b039283166020918202929092010152601354604051638244937560e01b8152911690638244937590611cdc908790879087906004016147ec565b6020604051808303816000875af1158015611cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1f91906147a0565b9050600082600481518110611d3657611d366147d6565b60200260200101511115611d4d57611d4d84612bc5565b82600081518110611d6057611d606147d6565b60200260200101516001600160a01b031683600181518110611d8457611d846147d6565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f348058387604051611dd89291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03948516815260208101828152601480546001808201835560009290925292517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec600290940293840180546001600160a01b0319169190981617909655517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed909101556007939093555090919050565b606060098054610e14906146b2565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0191906146e7565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7991906146e7565b60200151611f995760405162461bcd60e51b8152600401610a049061476b565b6111c281612bc5565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156120245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a04565b6120313385858403612aa1565b5060019392505050565b6000610ea43384846128a3565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b691906146e7565b602001516120d65760405162461bcd60e51b8152600401610a049061476b565b6111c281613448565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214d91906146e7565b6020015161216d5760405162461bcd60e51b8152600401610a049061476b565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906121d99084908790879060040161487b565b600060405180830381600087803b1580156121f357600080fd5b505af1158015612207573d6000803e3d6000fd5b50505050505050565b600b54600090600160a01b900460ff16156122875760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610a04565b61233b6122948b8d6148f5565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061233692508991508a905061497c565b613556565b9b9a5050505050505050505050565b4384101561238d5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610a04565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876123e0836149f7565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161245992919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156124c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906124fa5750886001600160a01b0316816001600160a01b0316145b6125465760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610a04565b612551898989612aa1565b505050505050505050565b61256461259c565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156111c2573d6000803e3d6000fd5b600d546000906001600160a01b031661262157600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c91906147b9565b905090565b50600d546001600160a01b031690565b600260075414156126545760405162461bcd60e51b8152600401610a04906144f9565b6002600755604051631d746d8360e01b8152306004820152670de0b6b3a764000060248201819052336044830152906001600160a01b03831690631d746d8390606401600060405180830381600087803b1580156126b157600080fd5b505af11580156126c5573d6000803e3d6000fd5b5050336000908152602081905260409020548392509050101561272a5760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e736572006044820152606401610a04565b61274c61273a6020850185613d6b565b60208501356105796040870187614692565b5050600160075550565b6006818154811061276657600080fd5b6000918252602090912001546001600160a01b0316905081565b6040516001600160a01b03808516602483015283166044820152606481018290526127eb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613a55565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286691906147a0565b612870919061467a565b6040516001600160a01b0385166024820152604481018290529091506127eb90859063095ea7b360e01b906064016127b4565b6001600160a01b0383166129075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a04565b6001600160a01b0382166129695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a04565b6001600160a01b038316600090815260208190526040902054818110156129e15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a04565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612a1890849061467a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6491815260200190565b60405180910390a36127eb565b6040516001600160a01b038316602482015260448101829052611af990849063a9059cbb60e01b906064016127b4565b6001600160a01b038316612b035760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a04565b6001600160a01b038216612b645760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a04565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff1615612c2f5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610a04565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612cbb9042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612cbb9042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600081612dcc60e0850185614a12565b612dd96020870187613d6b565b612de96040880160208901613d6b565b87604001358860c00135604051602001612e0896959493929190614a58565b60405160208183030381529060405280519060200120604051602001612e2f929190614a96565b60408051601f19818403018152919052805160209091012090506000600182612e5e6080870160608801614ab8565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa158015612eb5573d6000803e3d6000fd5b5050604051601f1901519150612ed090506020850185613d6b565b6001600160a01b0316816001600160a01b031614612f275760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610a04565b612f376040850160208601613d6b565b6001600160a01b0316612f4d6020860186613d6b565b6001600160a01b03167f22bdc88918efde2160206f0b5314bae23de0ae7fd1e9e7853d53178e32355a876040870135612f8960e0890189614a12565b612f9960808b0160608c01614ab8565b8a608001358b60a001358c60c00135604051612fbb9796959493929190614ad3565b60405180910390a360008460400135118015612ff057506000612fe46040860160208701613d6b565b6001600160a01b031614155b8015613012575060006130066020860186613d6b565b6001600160a01b031614155b156127eb5760135460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa158015613061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308591906147a0565b9050600081156130ac576130a9670de0b6b3a764000061146f60408901358561311a565b90505b60006130bc604088013583613132565b90506130f1336130cf60208a018a613d6b565b836130e060408c0160208d01613d6b565b6001600160a01b0316929190612780565b811561220757600b546122079033906001600160a01b0316846130e060408c0160208d01613d6b565b60006111248284614639565b60006111248284614658565b60006111248284614b16565b6000611124828461467a565b6001600160a01b0382166131a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a04565b80600260008282546131b2919061467a565b90915550506001600160a01b038216600090815260208190526040812080548392906131df90849061467a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166132895760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a04565b6001600160a01b038216600090815260208190526040902054818110156132fd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a04565b6001600160a01b038316600090815260208190526040812083830390556002805484929061332c908490614b16565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b6006548110156133dd576000600560006006848154811061339d5761339d6147d6565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff1916905550806133d5816149f7565b91505061337a565b506133ea60066000613c9f565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156134c25760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610a04565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612cbb565b6000808460008151811061356c5761356c6147d6565b6020026020010151905060008560018151811061358b5761358b6147d6565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561360d5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610a04565b6001600160a01b0381166136895760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610a04565b8460008151811061369c5761369c6147d6565b6020026020010151600014156137005760405162461bcd60e51b8152602060048201526024808201527f44617461746f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610a04565b84600081518110613713576137136147d6565b6020026020010151600a8190555087600081518110613734576137346147d6565b602002602001015160089080519060200190613751929190613cbd565b5087600181518110613765576137656147d6565b602002602001015160099080519060200190613782929190613cbd565b50600c80546001600160a01b0319166001600160a01b0384161790558551869060029081106137b3576137b36147d6565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161381d908890600090613810576138106147d6565b6020026020010151612bc5565b60006001600160a01b03168760018151811061383b5761383b6147d6565b60200260200101516001600160a01b0316146138e55761387487600181518110613867576138676147d6565b6020026020010151613426565b86600181518110613887576138876147d6565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516138dc929190918252602082015260400190565b60405180910390a35b866002815181106138f8576138f86147d6565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600381518110613939576139396147d6565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061397a5761397a6147d6565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516139bd9190614b2d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b6000613aaa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b279092919063ffffffff16565b805190915015611af95780806020019051810190613ac89190614bc9565b611af95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a04565b6060613b368484600085613b3e565b949350505050565b606082471015613b9f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a04565b843b613bed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a04565b600080866001600160a01b03168587604051613c099190614be6565b60006040518083038185875af1925050503d8060008114613c46576040519150601f19603f3d011682016040523d82523d6000602084013e613c4b565b606091505b5091509150613c5b828286613c66565b979650505050505050565b60608315613c75575081611124565b825115613c855782518084602001fd5b8160405162461bcd60e51b8152600401610a049190613e25565b50805460008255906000526020600020908101906111c29190613d41565b828054613cc9906146b2565b90600052602060002090601f016020900481019282613ceb5760008555613d31565b82601f10613d0457805160ff1916838001178555613d31565b82800160010185558215613d31579182015b82811115613d31578251825591602001919060010190613d16565b50613d3d929150613d41565b5090565b5b80821115613d3d5760008155600101613d42565b6001600160a01b03811681146111c257600080fd5b600060208284031215613d7d57600080fd5b813561112481613d56565b600060608284031215613d9a57600080fd5b50919050565b60008082840360c0811215613db457600080fd5b83356001600160401b03811115613dca57600080fd5b613dd686828701613d88565b93505060a0601f1982011215613deb57600080fd5b506020830190509250929050565b60005b83811015613e14578181015183820152602001613dfc565b838111156127eb5750506000910152565b6020815260008251806020840152613e44816040850160208701613df9565b601f01601f19169190910160400192915050565b60008060408385031215613e6b57600080fd5b8235613e7681613d56565b946020939093013593505050565b80151581146111c257600080fd5b600080600080600060a08688031215613eaa57600080fd5b8535613eb581613d56565b945060208601359350604086013592506060860135613ed381613e84565b91506080860135613ee381613d56565b809150509295509295909350565b600080600060608486031215613f0657600080fd5b8335613f1181613d56565b92506020840135613f2181613d56565b929592945050506040919091013590565b60006101008284031215613d9a57600080fd5b60008060408385031215613f5857600080fd5b8235915060208301356001600160401b03811115613f7557600080fd5b613f8185828601613f32565b9150509250929050565b600080600060608486031215613fa057600080fd5b8335613fab81613d56565b92506020840135915060408401356001600160401b03811115613fcd57600080fd5b613fd986828701613f32565b9150509250925092565b600060208284031215613ff557600080fd5b5035919050565b600081518084526020808501945080840160005b838110156140355781516001600160a01b031687529582019590820190600101614010565b509495945050505050565b6020815260006111246020830184613ffc565b602080825282518282018190526000919060409081850190868401855b8281101561409e57815180516001600160a01b03168552860151868501529284019290850190600101614070565b5091979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140e9576140e96140ab565b604052919050565b60006001600160401b0382111561410a5761410a6140ab565b5060051b60200190565b600082601f83011261412557600080fd5b8135602061413a614135836140f1565b6140c1565b82815260059290921b8401810191818101908684111561415957600080fd5b8286015b84811015614174578035835291830191830161415d565b509695505050505050565b60008060006060848603121561419457600080fd5b833561419f81613d56565b92506020848101356001600160401b03808211156141bc57600080fd5b818701915087601f8301126141d057600080fd5b81356141de614135826140f1565b81815260059190911b8301840190848101908a8311156141fd57600080fd5b938501935b8285101561422457843561421581613d56565b82529385019390850190614202565b96505050604087013592508083111561423c57600080fd5b5050613fd986828701614114565b6000806020838503121561425d57600080fd5b82356001600160401b038082111561427457600080fd5b818501915085601f83011261428857600080fd5b81358181111561429757600080fd5b8660208285010111156142a957600080fd5b60209290920196919550909350505050565b60008083601f8401126142cd57600080fd5b5081356001600160401b038111156142e457600080fd5b6020830191508360208260051b85010111156142ff57600080fd5b9250929050565b60008060008060008060008060008060a08b8d03121561432557600080fd5b8a356001600160401b038082111561433c57600080fd5b6143488e838f016142bb565b909c509a5060208d013591508082111561436157600080fd5b61436d8e838f016142bb565b909a50985060408d013591508082111561438657600080fd5b6143928e838f016142bb565b909850965060608d01359150808211156143ab57600080fd5b6143b78e838f016142bb565b909650945060808d01359150808211156143d057600080fd5b506143dd8d828e016142bb565b915080935050809150509295989b9194979a5092959850565b803560ff8116811461440757600080fd5b919050565b600080600080600080600060e0888a03121561442757600080fd5b873561443281613d56565b9650602088013561444281613d56565b9550604088013594506060880135935061445e608089016143f6565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561448d57600080fd5b823561449881613d56565b915060208301356144a881613d56565b809150509250929050565b600080604083850312156144c657600080fd5b82356001600160401b038111156144dc57600080fd5b6144e885828601613d88565b92505060208301356144a881613d56565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000806000806000806000806000806000806101808d8f03121561455357600080fd5b8c5161455e81613d56565b60208e0151909c5061456f81613d56565b60408e015160608f0151919c509a5061458781613d56565b8099505060808d0151975060a08d0151965060c08d01516145a781613e84565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d01516145d981613e84565b809150509295989b509295989b509295989b565b6000806000806080858703121561460357600080fd5b505082516020840151604085015160609095015191969095509092509050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561465357614653614623565b500290565b60008261467557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561468d5761468d614623565b500190565b6000823560fe198336030181126146a857600080fd5b9190910192915050565b600181811c908216806146c657607f821691505b60208210811415613d9a57634e487b7160e01b600052602260045260246000fd5b6000608082840312156146f957600080fd5b604051608081018181106001600160401b038211171561471b5761471b6140ab565b604052825161472981613e84565b8152602083015161473981613e84565b6020820152604083015161474c81613e84565b6040820152606083015161475f81613e84565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6000602082840312156147b257600080fd5b5051919050565b6000602082840312156147cb57600080fd5b815161112481613d56565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03841681526060602080830182905260009161481190840186613ffc565b838103604085015284518082528286019183019060005b8181101561484457835183529284019291840191600101614828565b509098975050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000614895604083018486614852565b95945050505050565b60006001600160401b038311156148b7576148b76140ab565b6148ca601f8401601f19166020016140c1565b90508281528383830111156148de57600080fd5b828260208301376000602084830101529392505050565b6000614903614135846140f1565b80848252602080830192508560051b85013681111561492157600080fd5b855b818110156149705780356001600160401b038111156149425760008081fd5b870136601f8201126149545760008081fd5b61496236823586840161489e565b865250938201938201614923565b50919695505050505050565b600061498a614135846140f1565b80848252602080830192508560051b8501368111156149a857600080fd5b855b818110156149705780356001600160401b038111156149c95760008081fd5b870136601f8201126149db5760008081fd5b6149e936823586840161489e565b8652509382019382016149aa565b6000600019821415614a0b57614a0b614623565b5060010190565b6000808335601e19843603018112614a2957600080fd5b8301803591506001600160401b03821115614a4357600080fd5b6020019150368190038213156142ff57600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b60008351614aa8818460208801613df9565b9190910191825250602001919050565b600060208284031215614aca57600080fd5b611124826143f6565b87815260c060208201526000614aed60c08301888a614852565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b600082821015614b2857614b28614623565b500390565b600080835481600182811c915080831680614b4957607f831692505b6020808410821415614b6957634e487b7160e01b86526022600452602486fd5b818015614b7d5760018114614b8e57614bbb565b60ff19861689528489019650614bbb565b60008a81526020902060005b86811015614bb35781548b820152908501908301614b9a565b505084890196505b509498975050505050505050565b600060208284031215614bdb57600080fd5b815161112481613e84565b600082516146a8818460208701613df956fea2646970667358221220c6c541b55b7434428a1f5fec71f18215c72396f839989bbe881a60df2e21c0ce64736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106102ad5760003560e01c806357ad5ff611610166578063a9059cbb116100d3578063dd62ed3e1161008f578063e89b86651161006c578063e89b866514610965578063ec342ad014610985578063ef867ff4146109a1578063f887ea40146109c157005b8063dd62ed3e14610902578063e086e5ec14610948578063e487c2e81461095057005b8063a9059cbb14610829578063aa271e1a14610849578063aa492ef914610882578063ab62f0e1146108a2578063b3998be0146108c2578063d505accf146108e257005b806382c03da51161012257806382c03da51461077f5780638b96412b1461079457806395d89b41146107b457806396fb3eaf146107c9578063983b2d56146107e9578063a457c2d71461080957005b806357ad5ff6146106a65780635d1ca631146106c657806370a08231146106da57806379cc6790146107105780637dda231e146107305780637ecebe001461075257005b8063313ce5671161021c57806339509351116101d857806342966c68116101b557806342966c681461062f57806347ac7d551461064f5780634f189cb21461067157806357a3a31b1461068657005b806339509351146105b3578063397b3743146105d357806340c10f191461060f57005b8063313ce56714610507578063355274ea14610529578063361fef491461053e578063363bdb461461055e5780633644e5151461057e578063392e53cd1461059457005b806318160ddd1161026b57806318160ddd14610434578063191c918a1461045357806323b872dd1461047357806325b00243146104935780633092afd5146104b357806330adf81f146104d357005b80627ffb78146102af57806301e88208146102e65780630269ae111461033657806306fdde0314610356578063095ea7b314610378578063160a7925146103a8575b005b3480156102bb57600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f257600080fd5b5061031f610301366004613d6b565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102dd565b34801561034257600080fd5b506102ad610351366004613da0565b6109e1565b34801561036257600080fd5b5061036b610e05565b6040516102dd9190613e25565b34801561038457600080fd5b50610398610393366004613e58565b610e97565b60405190151581526020016102dd565b3480156103b457600080fd5b506104156103c3366004613d6b565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102dd565b34801561044057600080fd5b506002545b6040519081526020016102dd565b34801561045f57600080fd5b506102ad61046e366004613e92565b610ead565b34801561047f57600080fd5b5061039861048e366004613ef1565b61107f565b34801561049f57600080fd5b506102ad6104ae366004613d6b565b61112b565b3480156104bf57600080fd5b506102ad6104ce366004613d6b565b6111c5565b3480156104df57600080fd5b506104457f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561051357600080fd5b5060125b60405160ff90911681526020016102dd565b34801561053557600080fd5b50600a54610445565b34801561054a57600080fd5b506102ad610559366004613f45565b61125c565b34801561056a57600080fd5b506102ad610579366004613f8b565b6112ad565b34801561058a57600080fd5b5061044560115481565b3480156105a057600080fd5b50600b54600160a01b900460ff16610398565b3480156105bf57600080fd5b506103986105ce366004613e58565b611587565b3480156105df57600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102dd565b34801561061b57600080fd5b506102ad61062a366004613e58565b6115c3565b34801561063b57600080fd5b506102ad61064a366004613fe3565b611690565b34801561065b57600080fd5b5061066461169a565b6040516102dd9190614040565b34801561067d57600080fd5b506102ad6116fb565b34801561069257600080fd5b506102ad6106a1366004613d6b565b6117e2565b3480156106b257600080fd5b506102ad6106c1366004613ef1565b611924565b3480156106d257600080fd5b506002610517565b3480156106e657600080fd5b506104456106f5366004613d6b565b6001600160a01b031660009081526020819052604090205490565b34801561071c57600080fd5b506102ad61072b366004613e58565b611a78565b34801561073c57600080fd5b50610745611afe565b6040516102dd9190614053565b34801561075e57600080fd5b5061044561076d366004613d6b565b60126020526000908152604090205481565b34801561078b57600080fd5b506102ad611b73565b3480156107a057600080fd5b506104456107af36600461417f565b611bcd565b3480156107c057600080fd5b5061036b611e81565b3480156107d557600080fd5b506103986107e4366004613d6b565b611e90565b3480156107f557600080fd5b506102ad610804366004613d6b565b611f0b565b34801561081557600080fd5b50610398610824366004613e58565b611fa2565b34801561083557600080fd5b50610398610844366004613e58565b61203b565b34801561085557600080fd5b50610398610864366004613d6b565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561088e57600080fd5b506102ad61089d366004613d6b565b612048565b3480156108ae57600080fd5b506102ad6108bd36600461424a565b6120df565b3480156108ce57600080fd5b506103986108dd366004614306565b612210565b3480156108ee57600080fd5b506102ad6108fd36600461440c565b61234a565b34801561090e57600080fd5b5061044561091d36600461447a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ad61255c565b34801561095c57600080fd5b506102c961259c565b34801561097157600080fd5b506102ad6109803660046144b3565b612631565b34801561099157600080fd5b50610445670de0b6b3a764000081565b3480156109ad57600080fd5b506102c96109bc366004613fe3565b612756565b3480156109cd57600080fd5b506013546102c9906001600160a01b031681565b60026007541415610a0d5760405162461bcd60e51b8152600401610a04906144f9565b60405180910390fd5b6002600755600080610a226020840184613d6b565b604051634c87087d60e01b8152602085013560048201526001600160a01b039190911690634c87087d9060240161018060405180830381865afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190614530565b5050505050505050935050925050306001600160a01b0316826001600160a01b031614610b105760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b6064820152608401610a04565b600080610b206020860186613d6b565b60405163c99733a760e01b815260208701356004820152670de0b6b3a764000060248201526001600160a01b03919091169063c99733a790604401608060405180830381865afa158015610b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9c91906145ed565b5050915091508460400135821115610c065760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610a04565b6000670de0b6b3a7640000610c1f606088013584614639565b610c299190614658565b9050610c35818461467a565b9250610c4c6001600160a01b038516333086612780565b610c6d610c5c6020880188613d6b565b6001600160a01b03861690856127f1565b610c7a6020870187613d6b565b60405163412dae6b60e11b815260208801356004820152670de0b6b3a76400006024820152604481018590526001600160a01b03919091169063825b5cd690606401600060405180830381600087803b158015610cd657600080fd5b505af1158015610cea573d6000803e3d6000fd5b505030600090815260208190526040902054670de0b6b3a7640000925090501015610d575760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d20466978656452617465006044820152606401610a04565b610d6a3033670de0b6b3a76400006128a3565b610d8c610d7a6020890189613d6b565b602089013561057960408b018b614692565b8015610db657610db6610da560a0880160808901613d6b565b6001600160a01b0386169083612a71565b60408051338152602081018590529081018290527fe89458a7527f4bf466ab18794ab8b1ca208b478483a1a87bcf0d976d421b4aff9060600160405180910390a1505060016007555050505050565b606060088054610e14906146b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e40906146b2565b8015610e8d5780601f10610e6257610100808354040283529160200191610e8d565b820191906000526020600020905b815481529060010190602001808311610e7057829003601f168201915b5050505050905090565b6000610ea4338484612aa1565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b91906146e7565b60200151610f3b5760405162461bcd60e51b8152600401610a049061476b565b60026007541415610f5e5760405162461bcd60e51b8152600401610a04906144f9565b6002600755601354604051636b14d00560e11b81526001600160a01b0387811660048301523060248301819052604483018890526064830187905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b158015610fcb57600080fd5b505af1158015610fdf573d6000803e3d6000fd5b505050508115610ff257610ff285612bc5565b601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a150506001600755505050565b600061108c8484846128a3565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156111115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a04565b61111e8533858403612aa1565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119991906146e7565b602001516111b95760405162461bcd60e51b8152600401610a049061476b565b6111c281612cc7565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af115801561120f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123391906146e7565b602001516112535760405162461bcd60e51b8152600401610a049061476b565b6111c281612d28565b60408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a16112a981612d88565b5050565b33600090815260208190526040812054670de0b6b3a764000091908211156113235760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610a04565b600e5460408051338152602081018590529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a3600060105411801561139e5750600f546001600160a01b031615155b80156113b45750600e546001600160a01b031615155b1561156e57601054600f546113d8916001600160a01b039091169033903090612780565b60135460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144691906147a0565b9050801561147857611475670de0b6b3a764000061146f8360105461311a90919063ffffffff16565b90613126565b91505b600e546010546114a9916001600160a01b0316906114969085613132565b600f546001600160a01b03169190612a71565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906114ee9086613132565b60405190815260200160405180910390a3811561156c57600b54600f54611522916001600160a01b03918216911684612a71565b600f54600b546040518481526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b505b61157783612d88565b61158082611690565b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ea49185906115be90869061467a565b612aa1565b3360009081526005602052604090205460ff166116225760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610a04565b600a546116388261163260025490565b9061313e565b11156116865760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610a04565b6112a9828261314a565b6111c23382613229565b60606015805480602002602001604051908101604052809291908181526020018280548015610e8d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116d4575050505050905090565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015611744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176891906147b9565b6001600160a01b0316336001600160a01b0316146117c85760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610a04565b6117d0613377565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff16806118735750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af115801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e91906146e7565b602001515b6118d35760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610a04565b6118dc81613426565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b031633146119915760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610a04565b6001600160a01b0383166119f85760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610a04565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b6000611a84833361091d565b905081811015611ae25760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610a04565b611aef8333848403612aa1565b611af98383613229565b505050565b60606014805480602002602001604051908101604052809291908181526020016000905b82821015611b6a576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611b22565b50505050905090565b600c546001600160a01b031633146117c85760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610a04565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611c18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3c91906146e7565b60200151611c5c5760405162461bcd60e51b8152600401610a049061476b565b60026007541415611c7f5760405162461bcd60e51b8152600401610a04906144f9565b60026007819055503083600381518110611c9b57611c9b6147d6565b6001600160a01b039283166020918202929092010152601354604051638244937560e01b8152911690638244937590611cdc908790879087906004016147ec565b6020604051808303816000875af1158015611cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1f91906147a0565b9050600082600481518110611d3657611d366147d6565b60200260200101511115611d4d57611d4d84612bc5565b82600081518110611d6057611d606147d6565b60200260200101516001600160a01b031683600181518110611d8457611d846147d6565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f348058387604051611dd89291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03948516815260208101828152601480546001808201835560009290925292517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec600290940293840180546001600160a01b0319169190981617909655517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed909101556007939093555090919050565b606060098054610e14906146b2565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0191906146e7565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7991906146e7565b60200151611f995760405162461bcd60e51b8152600401610a049061476b565b6111c281612bc5565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156120245760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a04565b6120313385858403612aa1565b5060019392505050565b6000610ea43384846128a3565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b691906146e7565b602001516120d65760405162461bcd60e51b8152600401610a049061476b565b6111c281613448565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214d91906146e7565b6020015161216d5760405162461bcd60e51b8152600401610a049061476b565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906121d99084908790879060040161487b565b600060405180830381600087803b1580156121f357600080fd5b505af1158015612207573d6000803e3d6000fd5b50505050505050565b600b54600090600160a01b900460ff16156122875760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610a04565b61233b6122948b8d6148f5565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061233692508991508a905061497c565b613556565b9b9a5050505050505050505050565b4384101561238d5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610a04565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876123e0836149f7565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161245992919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156124c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906124fa5750886001600160a01b0316816001600160a01b0316145b6125465760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610a04565b612551898989612aa1565b505050505050505050565b61256461259c565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156111c2573d6000803e3d6000fd5b600d546000906001600160a01b031661262157600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c91906147b9565b905090565b50600d546001600160a01b031690565b600260075414156126545760405162461bcd60e51b8152600401610a04906144f9565b6002600755604051631d746d8360e01b8152306004820152670de0b6b3a764000060248201819052336044830152906001600160a01b03831690631d746d8390606401600060405180830381600087803b1580156126b157600080fd5b505af11580156126c5573d6000803e3d6000fd5b5050336000908152602081905260409020548392509050101561272a5760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e736572006044820152606401610a04565b61274c61273a6020850185613d6b565b60208501356105796040870187614692565b5050600160075550565b6006818154811061276657600080fd5b6000918252602090912001546001600160a01b0316905081565b6040516001600160a01b03808516602483015283166044820152606481018290526127eb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613a55565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286691906147a0565b612870919061467a565b6040516001600160a01b0385166024820152604481018290529091506127eb90859063095ea7b360e01b906064016127b4565b6001600160a01b0383166129075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a04565b6001600160a01b0382166129695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a04565b6001600160a01b038316600090815260208190526040902054818110156129e15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a04565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612a1890849061467a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6491815260200190565b60405180910390a36127eb565b6040516001600160a01b038316602482015260448101829052611af990849063a9059cbb60e01b906064016127b4565b6001600160a01b038316612b035760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a04565b6001600160a01b038216612b645760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a04565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff1615612c2f5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610a04565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612cbb9042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612cbb9042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600081612dcc60e0850185614a12565b612dd96020870187613d6b565b612de96040880160208901613d6b565b87604001358860c00135604051602001612e0896959493929190614a58565b60405160208183030381529060405280519060200120604051602001612e2f929190614a96565b60408051601f19818403018152919052805160209091012090506000600182612e5e6080870160608801614ab8565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa158015612eb5573d6000803e3d6000fd5b5050604051601f1901519150612ed090506020850185613d6b565b6001600160a01b0316816001600160a01b031614612f275760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610a04565b612f376040850160208601613d6b565b6001600160a01b0316612f4d6020860186613d6b565b6001600160a01b03167f22bdc88918efde2160206f0b5314bae23de0ae7fd1e9e7853d53178e32355a876040870135612f8960e0890189614a12565b612f9960808b0160608c01614ab8565b8a608001358b60a001358c60c00135604051612fbb9796959493929190614ad3565b60405180910390a360008460400135118015612ff057506000612fe46040860160208701613d6b565b6001600160a01b031614155b8015613012575060006130066020860186613d6b565b6001600160a01b031614155b156127eb5760135460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa158015613061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308591906147a0565b9050600081156130ac576130a9670de0b6b3a764000061146f60408901358561311a565b90505b60006130bc604088013583613132565b90506130f1336130cf60208a018a613d6b565b836130e060408c0160208d01613d6b565b6001600160a01b0316929190612780565b811561220757600b546122079033906001600160a01b0316846130e060408c0160208d01613d6b565b60006111248284614639565b60006111248284614658565b60006111248284614b16565b6000611124828461467a565b6001600160a01b0382166131a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a04565b80600260008282546131b2919061467a565b90915550506001600160a01b038216600090815260208190526040812080548392906131df90849061467a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166132895760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a04565b6001600160a01b038216600090815260208190526040902054818110156132fd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a04565b6001600160a01b038316600090815260208190526040812083830390556002805484929061332c908490614b16565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b6006548110156133dd576000600560006006848154811061339d5761339d6147d6565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff1916905550806133d5816149f7565b91505061337a565b506133ea60066000613c9f565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156134c25760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610a04565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612cbb565b6000808460008151811061356c5761356c6147d6565b6020026020010151905060008560018151811061358b5761358b6147d6565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561360d5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610a04565b6001600160a01b0381166136895760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610a04565b8460008151811061369c5761369c6147d6565b6020026020010151600014156137005760405162461bcd60e51b8152602060048201526024808201527f44617461746f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610a04565b84600081518110613713576137136147d6565b6020026020010151600a8190555087600081518110613734576137346147d6565b602002602001015160089080519060200190613751929190613cbd565b5087600181518110613765576137656147d6565b602002602001015160099080519060200190613782929190613cbd565b50600c80546001600160a01b0319166001600160a01b0384161790558551869060029081106137b3576137b36147d6565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161381d908890600090613810576138106147d6565b6020026020010151612bc5565b60006001600160a01b03168760018151811061383b5761383b6147d6565b60200260200101516001600160a01b0316146138e55761387487600181518110613867576138676147d6565b6020026020010151613426565b86600181518110613887576138876147d6565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516138dc929190918252602082015260400190565b60405180910390a35b866002815181106138f8576138f86147d6565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600381518110613939576139396147d6565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061397a5761397a6147d6565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516139bd9190614b2d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b6000613aaa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b279092919063ffffffff16565b805190915015611af95780806020019051810190613ac89190614bc9565b611af95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a04565b6060613b368484600085613b3e565b949350505050565b606082471015613b9f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a04565b843b613bed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a04565b600080866001600160a01b03168587604051613c099190614be6565b60006040518083038185875af1925050503d8060008114613c46576040519150601f19603f3d011682016040523d82523d6000602084013e613c4b565b606091505b5091509150613c5b828286613c66565b979650505050505050565b60608315613c75575081611124565b825115613c855782518084602001fd5b8160405162461bcd60e51b8152600401610a049190613e25565b50805460008255906000526020600020908101906111c29190613d41565b828054613cc9906146b2565b90600052602060002090601f016020900481019282613ceb5760008555613d31565b82601f10613d0457805160ff1916838001178555613d31565b82800160010185558215613d31579182015b82811115613d31578251825591602001919060010190613d16565b50613d3d929150613d41565b5090565b5b80821115613d3d5760008155600101613d42565b6001600160a01b03811681146111c257600080fd5b600060208284031215613d7d57600080fd5b813561112481613d56565b600060608284031215613d9a57600080fd5b50919050565b60008082840360c0811215613db457600080fd5b83356001600160401b03811115613dca57600080fd5b613dd686828701613d88565b93505060a0601f1982011215613deb57600080fd5b506020830190509250929050565b60005b83811015613e14578181015183820152602001613dfc565b838111156127eb5750506000910152565b6020815260008251806020840152613e44816040850160208701613df9565b601f01601f19169190910160400192915050565b60008060408385031215613e6b57600080fd5b8235613e7681613d56565b946020939093013593505050565b80151581146111c257600080fd5b600080600080600060a08688031215613eaa57600080fd5b8535613eb581613d56565b945060208601359350604086013592506060860135613ed381613e84565b91506080860135613ee381613d56565b809150509295509295909350565b600080600060608486031215613f0657600080fd5b8335613f1181613d56565b92506020840135613f2181613d56565b929592945050506040919091013590565b60006101008284031215613d9a57600080fd5b60008060408385031215613f5857600080fd5b8235915060208301356001600160401b03811115613f7557600080fd5b613f8185828601613f32565b9150509250929050565b600080600060608486031215613fa057600080fd5b8335613fab81613d56565b92506020840135915060408401356001600160401b03811115613fcd57600080fd5b613fd986828701613f32565b9150509250925092565b600060208284031215613ff557600080fd5b5035919050565b600081518084526020808501945080840160005b838110156140355781516001600160a01b031687529582019590820190600101614010565b509495945050505050565b6020815260006111246020830184613ffc565b602080825282518282018190526000919060409081850190868401855b8281101561409e57815180516001600160a01b03168552860151868501529284019290850190600101614070565b5091979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140e9576140e96140ab565b604052919050565b60006001600160401b0382111561410a5761410a6140ab565b5060051b60200190565b600082601f83011261412557600080fd5b8135602061413a614135836140f1565b6140c1565b82815260059290921b8401810191818101908684111561415957600080fd5b8286015b84811015614174578035835291830191830161415d565b509695505050505050565b60008060006060848603121561419457600080fd5b833561419f81613d56565b92506020848101356001600160401b03808211156141bc57600080fd5b818701915087601f8301126141d057600080fd5b81356141de614135826140f1565b81815260059190911b8301840190848101908a8311156141fd57600080fd5b938501935b8285101561422457843561421581613d56565b82529385019390850190614202565b96505050604087013592508083111561423c57600080fd5b5050613fd986828701614114565b6000806020838503121561425d57600080fd5b82356001600160401b038082111561427457600080fd5b818501915085601f83011261428857600080fd5b81358181111561429757600080fd5b8660208285010111156142a957600080fd5b60209290920196919550909350505050565b60008083601f8401126142cd57600080fd5b5081356001600160401b038111156142e457600080fd5b6020830191508360208260051b85010111156142ff57600080fd5b9250929050565b60008060008060008060008060008060a08b8d03121561432557600080fd5b8a356001600160401b038082111561433c57600080fd5b6143488e838f016142bb565b909c509a5060208d013591508082111561436157600080fd5b61436d8e838f016142bb565b909a50985060408d013591508082111561438657600080fd5b6143928e838f016142bb565b909850965060608d01359150808211156143ab57600080fd5b6143b78e838f016142bb565b909650945060808d01359150808211156143d057600080fd5b506143dd8d828e016142bb565b915080935050809150509295989b9194979a5092959850565b803560ff8116811461440757600080fd5b919050565b600080600080600080600060e0888a03121561442757600080fd5b873561443281613d56565b9650602088013561444281613d56565b9550604088013594506060880135935061445e608089016143f6565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561448d57600080fd5b823561449881613d56565b915060208301356144a881613d56565b809150509250929050565b600080604083850312156144c657600080fd5b82356001600160401b038111156144dc57600080fd5b6144e885828601613d88565b92505060208301356144a881613d56565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000806000806000806000806000806000806101808d8f03121561455357600080fd5b8c5161455e81613d56565b60208e0151909c5061456f81613d56565b60408e015160608f0151919c509a5061458781613d56565b8099505060808d0151975060a08d0151965060c08d01516145a781613e84565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d01516145d981613e84565b809150509295989b509295989b509295989b565b6000806000806080858703121561460357600080fd5b505082516020840151604085015160609095015191969095509092509050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561465357614653614623565b500290565b60008261467557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561468d5761468d614623565b500190565b6000823560fe198336030181126146a857600080fd5b9190910192915050565b600181811c908216806146c657607f821691505b60208210811415613d9a57634e487b7160e01b600052602260045260246000fd5b6000608082840312156146f957600080fd5b604051608081018181106001600160401b038211171561471b5761471b6140ab565b604052825161472981613e84565b8152602083015161473981613e84565b6020820152604083015161474c81613e84565b6040820152606083015161475f81613e84565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6000602082840312156147b257600080fd5b5051919050565b6000602082840312156147cb57600080fd5b815161112481613d56565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03841681526060602080830182905260009161481190840186613ffc565b838103604085015284518082528286019183019060005b8181101561484457835183529284019291840191600101614828565b509098975050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000614895604083018486614852565b95945050505050565b60006001600160401b038311156148b7576148b76140ab565b6148ca601f8401601f19166020016140c1565b90508281528383830111156148de57600080fd5b828260208301376000602084830101529392505050565b6000614903614135846140f1565b80848252602080830192508560051b85013681111561492157600080fd5b855b818110156149705780356001600160401b038111156149425760008081fd5b870136601f8201126149545760008081fd5b61496236823586840161489e565b865250938201938201614923565b50919695505050505050565b600061498a614135846140f1565b80848252602080830192508560051b8501368111156149a857600080fd5b855b818110156149705780356001600160401b038111156149c95760008081fd5b870136601f8201126149db5760008081fd5b6149e936823586840161489e565b8652509382019382016149aa565b6000600019821415614a0b57614a0b614623565b5060010190565b6000808335601e19843603018112614a2957600080fd5b8301803591506001600160401b03821115614a4357600080fd5b6020019150368190038213156142ff57600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b60008351614aa8818460208801613df9565b9190910191825250602001919050565b600060208284031215614aca57600080fd5b611124826143f6565b87815260c060208201526000614aed60c08301888a614852565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b600082821015614b2857614b28614623565b500390565b600080835481600182811c915080831680614b4957607f831692505b6020808410821415614b6957634e487b7160e01b86526022600452602486fd5b818015614b7d5760018114614b8e57614bbb565b60ff19861689528489019650614bbb565b60008a81526020902060005b86811015614bb35781548b820152908501908301614b9a565b505084890196505b509498975050505050505050565b600060208284031215614bdb57600080fd5b815161112481613e84565b600082516146a8818460208701613df956fea2646970667358221220c6c541b55b7434428a1f5fec71f18215c72396f839989bbe881a60df2e21c0ce64736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/abis/ERC721Factory.json b/abis/ERC721Factory.json index 9c0f2c2..0ab45f8 100644 --- a/abis/ERC721Factory.json +++ b/abis/ERC721Factory.json @@ -122,6 +122,19 @@ "name": "NFTCreated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "dispenserContract", + "type": "address" + } + ], + "name": "NewDispenser", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -132,10 +145,22 @@ "type": "bytes32" }, { - "indexed": false, + "indexed": true, "internalType": "address", "name": "owner", "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "exchangeContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" } ], "name": "NewFixedRate", @@ -159,7 +184,7 @@ { "indexed": false, "internalType": "address", - "name": "basetokenAddress", + "name": "baseTokenAddress", "type": "address" } ], @@ -582,11 +607,6 @@ }, { "components": [ - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - }, { "internalType": "uint256[]", "name": "ssParams", @@ -596,6 +616,11 @@ "internalType": "uint256[]", "name": "swapFees", "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" } ], "internalType": "struct ERC721Factory.PoolData", @@ -1028,6 +1053,78 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "orderTxId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct IERC20Template.providerFees", + "name": "_providerFees", + "type": "tuple" + } + ], + "internalType": "struct ERC721Factory.reuseTokenOrder[]", + "name": "orders", + "type": "tuple[]" + } + ], + "name": "reuseMultipleTokenOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "router", @@ -1061,39 +1158,51 @@ "type": "uint256" }, { - "internalType": "address", - "name": "providerFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "providerFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "providerFeeAmount", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "providerData", - "type": "bytes" + "components": [ + { + "internalType": "address", + "name": "providerFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "providerFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "providerFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "validUntil", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct IERC20Template.providerFees", + "name": "_providerFees", + "type": "tuple" } ], "internalType": "struct ERC721Factory.tokenOrder[]", @@ -1157,8 +1266,8 @@ "type": "function" } ], - "bytecode": "0x60806040526000600a553480156200001657600080fd5b5060405162003cfb38038062003cfb8339810160408190526200003991620005ab565b6200004433620001be565b600180556001600160a01b038316158015906200006957506001600160a01b03821615155b80156200007e57506001600160a01b03841615155b620001065760405162461bcd60e51b815260206004820152604760248201527f4552433732314454466163746f72793a20496e76616c69642074656d706c617460448201527f6520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f72206064820152666164647265737360c81b608482015260a4015b60405180910390fd5b6001600160a01b0381166200016e5760405162461bcd60e51b815260206004820152602760248201527f4552433732314454466163746f72793a20496e76616c696420726f75746572206044820152666164647265737360c81b6064820152608401620000fd565b62000179846200020e565b506200018583620003d1565b50600c80546001600160a01b039283166001600160a01b03199182161790915560028054939092169216919091179055506200062f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080546001600160a01b031633146200025a5760405162461bcd60e51b8152602060048201819052602482015260008051602062003cdb8339815191526044820152606401620000fd565b6001600160a01b038216620002d85760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f5745440000000000000000006064820152608401620000fd565b813b620003285760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e545241435400000000006044820152606401620000fd565b6001600560008282546200033d919062000608565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a350506005545b919050565b600080546001600160a01b031633146200041d5760405162461bcd60e51b8152602060048201819052602482015260008051602062003cdb8339815191526044820152606401620000fd565b6001600160a01b0382166200049b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c61746520616460448201527f6472657373283029204e4f5420414c4c4f5745440000000000000000000000006064820152608401620000fd565b813b620004eb5760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e54524143540000000000006044820152606401620000fd565b6001600b600082825462000500919062000608565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b54919050565b80516001600160a01b0381168114620003cc57600080fd5b60008060008060808587031215620005c257600080fd5b620005cd8562000593565b9350620005dd6020860162000593565b9250620005ed6040860162000593565b9150620005fd6060860162000593565b905092959194509250565b600082198211156200062a57634e487b7160e01b600052601160045260246000fd5b500190565b61369c806200063f6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063c6cf868a11610097578063e5fc01f011610071578063e5fc01f0146104ff578063f2fde38b14610507578063f887ea401461051a578063fd024d6a1461052d57600080fd5b8063c6cf868a14610487578063ca4abc691461048f578063e3491099146104cc57600080fd5b806395c60305116100d357806395c6030514610420578063a33ef2a614610428578063b9cd22641461043b578063bbf8d71f1461047457600080fd5b80638da5cb5b146103c75780638f6051af146103d857806394051699146103eb57600080fd5b80635de329fd116101665780637b20bccf116101405780637b20bccf1461033a578063809d81051461034d57806382c442041461036057806389898869146103b457600080fd5b80635de329fd146102f6578063715018a61461030957806372f670f01461031157600080fd5b806326705c3c116101a257806326705c3c1461024f5780633315efd114610266578063557fcfb0146102c35780635c705982146102ee57600080fd5b8063042ab9b3146101c95780630ffda88714610207578063226e76151461021c575b600080fd5b6101dc6101d736600461267a565b610540565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b61021a61021536600461267a565b6105c7565b005b61023f61022a3660046126b3565b60096020526000908152604090205460ff1681565b60405190151581526020016101fe565b610258600b5481565b6040519081526020016101fe565b6101dc61027436600461267a565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102d66102d136600461291f565b61060c565b6040516001600160a01b0390911681526020016101fe565b600354610258565b61021a610304366004612a58565b6106ad565b61021a610b97565b6102d661031f3660046126b3565b6008602052600090815260409020546001600160a01b031681565b6102586103483660046126b3565b610bcd565b61021a61035b36600461267a565b610d60565b61039561036e36600461267a565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101fe565b6102d66103c2366004612bc8565b610dd2565b6000546001600160a01b03166102d6565b6102586103e63660046126b3565b6110a3565b6103956103f936600461267a565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610258565b61021a61043636600461267a565b61123e565b61044e610449366004612c9d565b6112b6565b604080516001600160a01b039485168152939092166020840152908201526060016101fe565b61021a61048236600461267a565b611567565b600a54610258565b6104a261049d366004612c9d565b611623565b604080516001600160a01b03948516815292841660208401529216918101919091526060016101fe565b6104df6104da366004612d24565b61188b565b604080516001600160a01b039384168152929091166020830152016101fe565b600554610258565b61021a6105153660046126b3565b611a63565b600c546102d6906001600160a01b031681565b6104df61053b366004612d87565b611afe565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b54831180159061059c57508215155b6105c15760405162461bcd60e51b81526004016105b890612dfb565b60405180910390fd5b92915050565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016105b890612e44565b6000908152600760205260409020805460ff60a01b19169055565b3360008181526008602052604081205490916001600160a01b03909116146106955760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105b8565b6106a3868686868633611d94565b9695505050505050565b600260015414156106d05760405162461bcd60e51b81526004016105b890612e79565b60026001558051603210156107275760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105b8565b60005b8151811015610b8f57600080600084848151811061074a5761074a612eb0565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190612ec6565b9250925092506000811180156107d557506001600160a01b03821615155b80156107e957506001600160a01b03831615155b15610835576108036001600160a01b038316333084612079565b61083585858151811061081857610818612eb0565b6020908102919091010151516001600160a01b03841690836120ea565b600085858151811061084957610849612eb0565b602002602001015160a00151118015610892575060006001600160a01b031685858151811061087a5761087a612eb0565b6020026020010151608001516001600160a01b031614155b80156108ce575060006001600160a01b03168585815181106108b6576108b6612eb0565b6020026020010151606001516001600160a01b031614155b156109a25761092d33308787815181106108ea576108ea612eb0565b602002602001015160a0015188888151811061090857610908612eb0565b6020026020010151608001516001600160a01b0316612079909392919063ffffffff16565b6109a285858151811061094257610942612eb0565b60200260200101516000015186868151811061096057610960612eb0565b602002602001015160a0015187878151811061097e5761097e612eb0565b6020026020010151608001516001600160a01b03166120ea9092919063ffffffff16565b6109e73330670de0b6b3a76400008888815181106109c2576109c2612eb0565b6020026020010151600001516001600160a01b0316612079909392919063ffffffff16565b8484815181106109f9576109f9612eb0565b6020026020010151600001516001600160a01b0316639b4f44b6868681518110610a2557610a25612eb0565b602002602001015160200151878781518110610a4357610a43612eb0565b602002602001015160400151888881518110610a6157610a61612eb0565b602002602001015160600151898981518110610a7f57610a7f612eb0565b6020026020010151608001518a8a81518110610a9d57610a9d612eb0565b602002602001015160a001518b8b81518110610abb57610abb612eb0565b602002602001015160c001518c8c81518110610ad957610ad9612eb0565b602002602001015160e001518d8d81518110610af757610af7612eb0565b602002602001015161010001518e8e81518110610b1657610b16612eb0565b602002602001015161012001516040518a63ffffffff1660e01b8152600401610b4799989796959493929190612f61565b600060405180830381600087803b158015610b6157600080fd5b505af1158015610b75573d6000803e3d6000fd5b505050505050508080610b8790612fdd565b91505061072a565b505060018055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105b890612e44565b610bcb600061219c565b565b600080546001600160a01b03163314610bf85760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105b8565b813b610cb95760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105b8565b6001600b6000828254610ccc9190612ff8565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b81526004016105b890612e44565b6005548111158015610d9b57508015155b610db75760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b19169055565b60006005548411158015610de557508315155b610e015760405162461bcd60e51b81526004016105b890613010565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052610e9d5760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105b8565b8051610ea8906121ec565b91506001600160a01b038216610f28576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105b8565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d790610f7e9033908c908c9030908c908c9060040161305c565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906130d0565b61102a5760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105b8565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b8960405161107794939291906130ed565b60405180910390a36001600360008282546110929190612ff8565b909155509298975050505050505050565b600080546001600160a01b031633146110ce5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105b8565b813b6111985760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105b8565b6001600560008282546111ab9190612ff8565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146112685760405162461bcd60e51b81526004016105b890612e44565b600554811115801561127957508015155b6112955760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156112de5760405162461bcd60e51b81526004016105b890612e79565b60026001556113b36112f08780613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611332925050506020890189613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061137960608c018c613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610dd292505050565b92506001600160a01b03831663e38d7cad86356113d36020890189613182565b6113e060408b018b613182565b6113ed60608d018d613182565b6113fa60808f018f613182565b6040518a63ffffffff1660e01b815260040161141e99989796959493929190613315565b6020604051808303816000875af115801561143d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146191906133b6565b91506001600160a01b038216638b96412b61147f60208701876126b3565b61148c6020880188613182565b61149960408a018a613182565b6040518663ffffffff1660e01b81526004016114b99594939291906133d3565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190613417565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0384169063fe1ec88090602401600060405180830381600087803b15801561154057600080fd5b505af1158015611554573d6000803e3d6000fd5b5050600180555092969195509350915050565b6000546001600160a01b031633146115915760405162461bcd60e51b81526004016105b890612e44565b600b5481111580156115a257508015155b6116025760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105b8565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b60008060006002600154141561164b5760405162461bcd60e51b81526004016105b890612e79565b60026001556116be33306116626020880188613182565b600481811061167357611673612eb0565b602002919091013590506116878880613182565b600181811061169857611698612eb0565b90506020020160208101906116ad91906126b3565b6001600160a01b0316929190612079565b6116cb6112f08780613135565b92506001600160a01b03831663e38d7cad86356116eb6020890189613182565b6116f860408b018b613182565b61170560608d018d613182565b61171260808f018f613182565b6040518a63ffffffff1660e01b815260040161173699989796959493929190613315565b6020604051808303816000875af1158015611755573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177991906133b6565b600c549092506117f4906001600160a01b03166117996020870187613182565b60048181106117aa576117aa612eb0565b602002919091013590506117be8780613182565b60018181106117cf576117cf612eb0565b90506020020160208101906117e491906126b3565b6001600160a01b031691906120ea565b6001600160a01b038216635bfe4da06118106020870187613182565b61181d6040890189613182565b6118278a80613182565b6040518763ffffffff1660e01b815260040161184896959493929190613430565b6020604051808303816000875af1158015611867573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc91906133b6565b600080600260015414156118b15760405162461bcd60e51b81526004016105b890612e79565b600260015561194c6118c38580613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611905925050506020870187613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408701353061137960608a018a613135565b91506001600160a01b03821663e38d7cad843561196c6020870187613182565b6119796040890189613182565b61198660608b018b613182565b61199360808d018d613182565b6040518a63ffffffff1660e01b81526004016119b799989796959493929190613315565b6020604051808303816000875af11580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa91906133b6565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0383169063fe1ec88090602401600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505060018055509194909350915050565b6000546001600160a01b03163314611a8d5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038116611af25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b8565b611afb8161219c565b50565b60008060026001541415611b245760405162461bcd60e51b81526004016105b890612e79565b6002600155611bbf611b368680613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b78925050506020880188613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061137960608b018b613135565b91506001600160a01b03821663e38d7cad8535611bdf6020880188613182565b611bec60408a018a613182565b611bf960608c018c613182565b611c0660808e018e613182565b6040518a63ffffffff1660e01b8152600401611c2a99989796959493929190613315565b6020604051808303816000875af1158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6d91906133b6565b90506001600160a01b03811663191c918a611c8b60208601866126b3565b60208601356040870135611ca56080890160608a01613479565b611cb560a08a0160808b016126b3565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611d1557600080fd5b505af1158015611d29573d6000803e3d6000fd5b50506040516301fc3d9160e71b81523060048201526001600160a01b038516925063fe1ec8809150602401600060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b50506001805550919590945092505050565b600083600081518110611da957611da9612eb0565b602002602001015160001415611e0f5760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105b8565b600b548711158015611e2057508615155b611e3c5760405162461bcd60e51b81526004016105b890612dfb565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052611ed55760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105b8565b8051611ee0906121ec565b6001600160a01b0381166000818152600960205260409020805460ff19166001179055909250611f785760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105b8565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b9089600081518110611fc457611fc4612eb0565b60200260200101518a600181518110611fdf57611fdf612eb0565b602002602001015189600081518110611ffa57611ffa612eb0565b6020026020010151886040516120139493929190613496565b60405180910390a36001600a600082825461202e9190612ff8565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b03841660808201526060810185905261206d838261227c565b50509695505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120e49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612429565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f9190613417565b6121699190612ff8565b6040516001600160a01b0385166024820152604481018290529091506120e490859063095ea7b360e01b906064016120ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60408051600380825260808201909252839160009190602082016060803683370190505090508260800151816000815181106122ba576122ba612eb0565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106122eb576122eb612eb0565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061231c5761231c612eb0565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b815260040161238095949392919061358e565b6020604051808303816000875af115801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c391906130d0565b6120e45760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105b8565b600061247e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125009092919063ffffffff16565b8051909150156124fb578080602001905181019061249c91906130d0565b6124fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b8565b505050565b606061250f8484600085612519565b90505b9392505050565b60608247101561257a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b8565b843b6125c85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b8565b600080866001600160a01b031685876040516125e49190613637565b60006040518083038185875af1925050503d8060008114612621576040519150601f19603f3d011682016040523d82523d6000602084013e612626565b606091505b5091509150612636828286612641565b979650505050505050565b60608315612650575081612512565b8251156126605782518084602001fd5b8160405162461bcd60e51b81526004016105b89190613653565b60006020828403121561268c57600080fd5b5035919050565b6001600160a01b0381168114611afb57600080fd5b8035610d5b81612693565b6000602082840312156126c557600080fd5b813561251281612693565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715612709576127096126d0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612737576127376126d0565b604052919050565b60006001600160401b03821115612758576127586126d0565b5060051b60200190565b600082601f83011261277357600080fd5b81356001600160401b0381111561278c5761278c6126d0565b61279f601f8201601f191660200161270f565b8181528460208386010111156127b457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126127e257600080fd5b813560206127f76127f28361273f565b61270f565b82815260059290921b8401810191818101908684111561281657600080fd5b8286015b8481101561283a57803561282d81612693565b835291830191830161281a565b509695505050505050565b600082601f83011261285657600080fd5b813560206128666127f28361273f565b82815260059290921b8401810191818101908684111561288557600080fd5b8286015b8481101561283a5780358352918301918301612889565b600082601f8301126128b157600080fd5b813560206128c16127f28361273f565b82815260059290921b840181019181810190868411156128e057600080fd5b8286015b8481101561283a5780356001600160401b038111156129035760008081fd5b6129118986838b0101612762565b8452509183019183016128e4565b600080600080600060a0868803121561293757600080fd5b853594506020808701356001600160401b038082111561295657600080fd5b818901915089601f83011261296a57600080fd5b81356129786127f28261273f565b81815260059190911b8301840190848101908c83111561299757600080fd5b8585015b838110156129cf578035858111156129b35760008081fd5b6129c18f89838a0101612762565b84525091860191860161299b565b509850505060408901359250808311156129e857600080fd5b6129f48a848b016127d1565b95506060890135925080831115612a0a57600080fd5b612a168a848b01612845565b94506080890135925080831115612a2c57600080fd5b5050612a3a888289016128a0565b9150509295509295909350565b803560ff81168114610d5b57600080fd5b60006020808385031215612a6b57600080fd5b82356001600160401b0380821115612a8257600080fd5b818501915085601f830112612a9657600080fd5b8135612aa46127f28261273f565b81815260059190911b83018401908481019088831115612ac357600080fd5b8585015b83811015612bbb57803585811115612adf5760008081fd5b8601610140818c03601f1901811315612af85760008081fd5b612b006126e6565b612b0b8a84016126a8565b81526040612b1a8185016126a8565b8b8301526060808501358284015260809150612b378286016126a8565b9083015260a0612b488582016126a8565b8284015260c0915081850135818401525060e0612b66818601612a47565b828401526101009150818501358184015250610120808501358284015283850135935089841115612b9957600091508182fd5b612ba78f8d86880101612762565b908301525085525050918601918601612ac7565b5098975050505050505050565b600080600080600060a08688031215612be057600080fd5b85356001600160401b0380821115612bf757600080fd5b612c0389838a01612762565b96506020880135915080821115612c1957600080fd5b612c2589838a01612762565b95506040880135945060608801359150612c3e82612693565b90925060808701359080821115612c5457600080fd5b50612a3a88828901612762565b600060808284031215612c7357600080fd5b50919050565b600060a08284031215612c7357600080fd5b600060608284031215612c7357600080fd5b600080600060608486031215612cb257600080fd5b83356001600160401b0380821115612cc957600080fd5b612cd587838801612c61565b94506020860135915080821115612ceb57600080fd5b612cf787838801612c79565b93506040860135915080821115612d0d57600080fd5b50612d1a86828701612c8b565b9150509250925092565b60008060408385031215612d3757600080fd5b82356001600160401b0380821115612d4e57600080fd5b612d5a86838701612c61565b93506020850135915080821115612d7057600080fd5b50612d7d85828601612c79565b9150509250929050565b600080600060e08486031215612d9c57600080fd5b83356001600160401b0380821115612db357600080fd5b612dbf87838801612c61565b94506020860135915080821115612dd557600080fd5b50612de286828701612c79565b925050612df28560408601612c79565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215612edb57600080fd5b8351612ee681612693565b6020850151909350612ef781612693565b80925050604084015190509250925092565b60005b83811015612f24578181015183820152602001612f0c565b838111156120e45750506000910152565b60008151808452612f4d816020860160208601612f09565b601f01601f19169290920160200192915050565b600061012060018060a01b03808d1684528b6020850152808b166040850152808a1660608501525087608084015260ff871660a08401528560c08401528460e084015280610100840152612fb781840185612f35565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415612ff157612ff1612fc7565b5060010190565b6000821982111561300b5761300b612fc7565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c0602084015261307e60c0840189612f35565b83810360408501526130908189612f35565b90508187166060850152818616608085015283810360a08501526130b48186612f35565b9a9950505050505050505050565b8015158114611afb57600080fd5b6000602082840312156130e257600080fd5b8151612512816130c2565b6080815260006131006080830187612f35565b6001600160a01b038616602084015282810360408401526131218186612f35565b905082810360608401526126368185612f35565b6000808335601e1984360301811261314c57600080fd5b8301803591506001600160401b0382111561316657600080fd5b60200191503681900382131561317b57600080fd5b9250929050565b6000808335601e1984360301811261319957600080fd5b8301803591506001600160401b038211156131b357600080fd5b6020019150600581901b360382131561317b57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261320b57600080fd5b83016020810192503590506001600160401b0381111561322a57600080fd5b80360383131561317b57600080fd5b8183526000602080850194508260005b8581101561327757813561325c81612693565b6001600160a01b031687529582019590820190600101613249565b509495945050505050565b81835260006001600160fb1b0383111561329b57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b878110156133085782840389526132e982886131f4565b6132f48682846131cb565b9a87019a95505050908401906001016132d2565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156133765785840360bf19018352613354828f6131f4565b61335f8682846131cb565b955050506020928301929190910190600101613339565b505050828103604084015261338c81898b613239565b905082810360608401526133a1818789613282565b90508281036080840152612fb78185876132b8565b6000602082840312156133c857600080fd5b815161251281612693565b6001600160a01b03861681526060602082018190526000906133f89083018688613239565b828103604084015261340b818587613282565b98975050505050505050565b60006020828403121561342957600080fd5b5051919050565b60608152600061344460608301888a613282565b8281036020840152613457818789613282565b9050828103604084015261346c818587613239565b9998505050505050505050565b60006020828403121561348b57600080fd5b8135612512816130c2565b6080815260006134a96080830187612f35565b82810360208401526134bb8187612f35565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b838110156132775781516001600160a01b0316875295820195908201906001016134f1565b600081518084526020808501945080840160005b838110156132775781518752958201959082019060010161352a565b600081518084526020808501808196508360051b8101915082860160005b8581101561330857828403895261357c848351612f35565b98850198935090840190600101613564565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b838110156135e55760bf198887030185526135d3868351612f35565b955093820193908201906001016135b7565b5050858403818701525050506135fb81886134dd565b9050828103604084015261360f81876134dd565b905082810360608401526136238186613516565b9050828103608084015261340b8185613546565b60008251613649818460208701612f09565b9190910192915050565b6020815260006125126020830184612f3556fea2646970667358221220f4abf2a09272c4e73999373d321776187583bec5d10085cc5b62620c7317b4f964736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063c6cf868a11610097578063e5fc01f011610071578063e5fc01f0146104ff578063f2fde38b14610507578063f887ea401461051a578063fd024d6a1461052d57600080fd5b8063c6cf868a14610487578063ca4abc691461048f578063e3491099146104cc57600080fd5b806395c60305116100d357806395c6030514610420578063a33ef2a614610428578063b9cd22641461043b578063bbf8d71f1461047457600080fd5b80638da5cb5b146103c75780638f6051af146103d857806394051699146103eb57600080fd5b80635de329fd116101665780637b20bccf116101405780637b20bccf1461033a578063809d81051461034d57806382c442041461036057806389898869146103b457600080fd5b80635de329fd146102f6578063715018a61461030957806372f670f01461031157600080fd5b806326705c3c116101a257806326705c3c1461024f5780633315efd114610266578063557fcfb0146102c35780635c705982146102ee57600080fd5b8063042ab9b3146101c95780630ffda88714610207578063226e76151461021c575b600080fd5b6101dc6101d736600461267a565b610540565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b61021a61021536600461267a565b6105c7565b005b61023f61022a3660046126b3565b60096020526000908152604090205460ff1681565b60405190151581526020016101fe565b610258600b5481565b6040519081526020016101fe565b6101dc61027436600461267a565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102d66102d136600461291f565b61060c565b6040516001600160a01b0390911681526020016101fe565b600354610258565b61021a610304366004612a58565b6106ad565b61021a610b97565b6102d661031f3660046126b3565b6008602052600090815260409020546001600160a01b031681565b6102586103483660046126b3565b610bcd565b61021a61035b36600461267a565b610d60565b61039561036e36600461267a565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101fe565b6102d66103c2366004612bc8565b610dd2565b6000546001600160a01b03166102d6565b6102586103e63660046126b3565b6110a3565b6103956103f936600461267a565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610258565b61021a61043636600461267a565b61123e565b61044e610449366004612c9d565b6112b6565b604080516001600160a01b039485168152939092166020840152908201526060016101fe565b61021a61048236600461267a565b611567565b600a54610258565b6104a261049d366004612c9d565b611623565b604080516001600160a01b03948516815292841660208401529216918101919091526060016101fe565b6104df6104da366004612d24565b61188b565b604080516001600160a01b039384168152929091166020830152016101fe565b600554610258565b61021a6105153660046126b3565b611a63565b600c546102d6906001600160a01b031681565b6104df61053b366004612d87565b611afe565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b54831180159061059c57508215155b6105c15760405162461bcd60e51b81526004016105b890612dfb565b60405180910390fd5b92915050565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016105b890612e44565b6000908152600760205260409020805460ff60a01b19169055565b3360008181526008602052604081205490916001600160a01b03909116146106955760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105b8565b6106a3868686868633611d94565b9695505050505050565b600260015414156106d05760405162461bcd60e51b81526004016105b890612e79565b60026001558051603210156107275760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105b8565b60005b8151811015610b8f57600080600084848151811061074a5761074a612eb0565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190612ec6565b9250925092506000811180156107d557506001600160a01b03821615155b80156107e957506001600160a01b03831615155b15610835576108036001600160a01b038316333084612079565b61083585858151811061081857610818612eb0565b6020908102919091010151516001600160a01b03841690836120ea565b600085858151811061084957610849612eb0565b602002602001015160a00151118015610892575060006001600160a01b031685858151811061087a5761087a612eb0565b6020026020010151608001516001600160a01b031614155b80156108ce575060006001600160a01b03168585815181106108b6576108b6612eb0565b6020026020010151606001516001600160a01b031614155b156109a25761092d33308787815181106108ea576108ea612eb0565b602002602001015160a0015188888151811061090857610908612eb0565b6020026020010151608001516001600160a01b0316612079909392919063ffffffff16565b6109a285858151811061094257610942612eb0565b60200260200101516000015186868151811061096057610960612eb0565b602002602001015160a0015187878151811061097e5761097e612eb0565b6020026020010151608001516001600160a01b03166120ea9092919063ffffffff16565b6109e73330670de0b6b3a76400008888815181106109c2576109c2612eb0565b6020026020010151600001516001600160a01b0316612079909392919063ffffffff16565b8484815181106109f9576109f9612eb0565b6020026020010151600001516001600160a01b0316639b4f44b6868681518110610a2557610a25612eb0565b602002602001015160200151878781518110610a4357610a43612eb0565b602002602001015160400151888881518110610a6157610a61612eb0565b602002602001015160600151898981518110610a7f57610a7f612eb0565b6020026020010151608001518a8a81518110610a9d57610a9d612eb0565b602002602001015160a001518b8b81518110610abb57610abb612eb0565b602002602001015160c001518c8c81518110610ad957610ad9612eb0565b602002602001015160e001518d8d81518110610af757610af7612eb0565b602002602001015161010001518e8e81518110610b1657610b16612eb0565b602002602001015161012001516040518a63ffffffff1660e01b8152600401610b4799989796959493929190612f61565b600060405180830381600087803b158015610b6157600080fd5b505af1158015610b75573d6000803e3d6000fd5b505050505050508080610b8790612fdd565b91505061072a565b505060018055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105b890612e44565b610bcb600061219c565b565b600080546001600160a01b03163314610bf85760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105b8565b813b610cb95760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105b8565b6001600b6000828254610ccc9190612ff8565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b81526004016105b890612e44565b6005548111158015610d9b57508015155b610db75760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b19169055565b60006005548411158015610de557508315155b610e015760405162461bcd60e51b81526004016105b890613010565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052610e9d5760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105b8565b8051610ea8906121ec565b91506001600160a01b038216610f28576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105b8565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d790610f7e9033908c908c9030908c908c9060040161305c565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906130d0565b61102a5760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105b8565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b8960405161107794939291906130ed565b60405180910390a36001600360008282546110929190612ff8565b909155509298975050505050505050565b600080546001600160a01b031633146110ce5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105b8565b813b6111985760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105b8565b6001600560008282546111ab9190612ff8565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146112685760405162461bcd60e51b81526004016105b890612e44565b600554811115801561127957508015155b6112955760405162461bcd60e51b81526004016105b890613010565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156112de5760405162461bcd60e51b81526004016105b890612e79565b60026001556113b36112f08780613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611332925050506020890189613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061137960608c018c613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610dd292505050565b92506001600160a01b03831663e38d7cad86356113d36020890189613182565b6113e060408b018b613182565b6113ed60608d018d613182565b6113fa60808f018f613182565b6040518a63ffffffff1660e01b815260040161141e99989796959493929190613315565b6020604051808303816000875af115801561143d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146191906133b6565b91506001600160a01b038216638b96412b61147f60208701876126b3565b61148c6020880188613182565b61149960408a018a613182565b6040518663ffffffff1660e01b81526004016114b99594939291906133d3565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190613417565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0384169063fe1ec88090602401600060405180830381600087803b15801561154057600080fd5b505af1158015611554573d6000803e3d6000fd5b5050600180555092969195509350915050565b6000546001600160a01b031633146115915760405162461bcd60e51b81526004016105b890612e44565b600b5481111580156115a257508015155b6116025760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105b8565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b60008060006002600154141561164b5760405162461bcd60e51b81526004016105b890612e79565b60026001556116be33306116626020880188613182565b600481811061167357611673612eb0565b602002919091013590506116878880613182565b600181811061169857611698612eb0565b90506020020160208101906116ad91906126b3565b6001600160a01b0316929190612079565b6116cb6112f08780613135565b92506001600160a01b03831663e38d7cad86356116eb6020890189613182565b6116f860408b018b613182565b61170560608d018d613182565b61171260808f018f613182565b6040518a63ffffffff1660e01b815260040161173699989796959493929190613315565b6020604051808303816000875af1158015611755573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177991906133b6565b600c549092506117f4906001600160a01b03166117996020870187613182565b60048181106117aa576117aa612eb0565b602002919091013590506117be8780613182565b60018181106117cf576117cf612eb0565b90506020020160208101906117e491906126b3565b6001600160a01b031691906120ea565b6001600160a01b038216635bfe4da06118106020870187613182565b61181d6040890189613182565b6118278a80613182565b6040518763ffffffff1660e01b815260040161184896959493929190613430565b6020604051808303816000875af1158015611867573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc91906133b6565b600080600260015414156118b15760405162461bcd60e51b81526004016105b890612e79565b600260015561194c6118c38580613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611905925050506020870187613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408701353061137960608a018a613135565b91506001600160a01b03821663e38d7cad843561196c6020870187613182565b6119796040890189613182565b61198660608b018b613182565b61199360808d018d613182565b6040518a63ffffffff1660e01b81526004016119b799989796959493929190613315565b6020604051808303816000875af11580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa91906133b6565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0383169063fe1ec88090602401600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505060018055509194909350915050565b6000546001600160a01b03163314611a8d5760405162461bcd60e51b81526004016105b890612e44565b6001600160a01b038116611af25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b8565b611afb8161219c565b50565b60008060026001541415611b245760405162461bcd60e51b81526004016105b890612e79565b6002600155611bbf611b368680613135565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b78925050506020880188613135565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061137960608b018b613135565b91506001600160a01b03821663e38d7cad8535611bdf6020880188613182565b611bec60408a018a613182565b611bf960608c018c613182565b611c0660808e018e613182565b6040518a63ffffffff1660e01b8152600401611c2a99989796959493929190613315565b6020604051808303816000875af1158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6d91906133b6565b90506001600160a01b03811663191c918a611c8b60208601866126b3565b60208601356040870135611ca56080890160608a01613479565b611cb560a08a0160808b016126b3565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611d1557600080fd5b505af1158015611d29573d6000803e3d6000fd5b50506040516301fc3d9160e71b81523060048201526001600160a01b038516925063fe1ec8809150602401600060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b50506001805550919590945092505050565b600083600081518110611da957611da9612eb0565b602002602001015160001415611e0f5760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105b8565b600b548711158015611e2057508615155b611e3c5760405162461bcd60e51b81526004016105b890612dfb565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052611ed55760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105b8565b8051611ee0906121ec565b6001600160a01b0381166000818152600960205260409020805460ff19166001179055909250611f785760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105b8565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b9089600081518110611fc457611fc4612eb0565b60200260200101518a600181518110611fdf57611fdf612eb0565b602002602001015189600081518110611ffa57611ffa612eb0565b6020026020010151886040516120139493929190613496565b60405180910390a36001600a600082825461202e9190612ff8565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b03841660808201526060810185905261206d838261227c565b50509695505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120e49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612429565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f9190613417565b6121699190612ff8565b6040516001600160a01b0385166024820152604481018290529091506120e490859063095ea7b360e01b906064016120ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60408051600380825260808201909252839160009190602082016060803683370190505090508260800151816000815181106122ba576122ba612eb0565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106122eb576122eb612eb0565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061231c5761231c612eb0565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b815260040161238095949392919061358e565b6020604051808303816000875af115801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c391906130d0565b6120e45760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105b8565b600061247e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125009092919063ffffffff16565b8051909150156124fb578080602001905181019061249c91906130d0565b6124fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b8565b505050565b606061250f8484600085612519565b90505b9392505050565b60608247101561257a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b8565b843b6125c85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b8565b600080866001600160a01b031685876040516125e49190613637565b60006040518083038185875af1925050503d8060008114612621576040519150601f19603f3d011682016040523d82523d6000602084013e612626565b606091505b5091509150612636828286612641565b979650505050505050565b60608315612650575081612512565b8251156126605782518084602001fd5b8160405162461bcd60e51b81526004016105b89190613653565b60006020828403121561268c57600080fd5b5035919050565b6001600160a01b0381168114611afb57600080fd5b8035610d5b81612693565b6000602082840312156126c557600080fd5b813561251281612693565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715612709576127096126d0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612737576127376126d0565b604052919050565b60006001600160401b03821115612758576127586126d0565b5060051b60200190565b600082601f83011261277357600080fd5b81356001600160401b0381111561278c5761278c6126d0565b61279f601f8201601f191660200161270f565b8181528460208386010111156127b457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126127e257600080fd5b813560206127f76127f28361273f565b61270f565b82815260059290921b8401810191818101908684111561281657600080fd5b8286015b8481101561283a57803561282d81612693565b835291830191830161281a565b509695505050505050565b600082601f83011261285657600080fd5b813560206128666127f28361273f565b82815260059290921b8401810191818101908684111561288557600080fd5b8286015b8481101561283a5780358352918301918301612889565b600082601f8301126128b157600080fd5b813560206128c16127f28361273f565b82815260059290921b840181019181810190868411156128e057600080fd5b8286015b8481101561283a5780356001600160401b038111156129035760008081fd5b6129118986838b0101612762565b8452509183019183016128e4565b600080600080600060a0868803121561293757600080fd5b853594506020808701356001600160401b038082111561295657600080fd5b818901915089601f83011261296a57600080fd5b81356129786127f28261273f565b81815260059190911b8301840190848101908c83111561299757600080fd5b8585015b838110156129cf578035858111156129b35760008081fd5b6129c18f89838a0101612762565b84525091860191860161299b565b509850505060408901359250808311156129e857600080fd5b6129f48a848b016127d1565b95506060890135925080831115612a0a57600080fd5b612a168a848b01612845565b94506080890135925080831115612a2c57600080fd5b5050612a3a888289016128a0565b9150509295509295909350565b803560ff81168114610d5b57600080fd5b60006020808385031215612a6b57600080fd5b82356001600160401b0380821115612a8257600080fd5b818501915085601f830112612a9657600080fd5b8135612aa46127f28261273f565b81815260059190911b83018401908481019088831115612ac357600080fd5b8585015b83811015612bbb57803585811115612adf5760008081fd5b8601610140818c03601f1901811315612af85760008081fd5b612b006126e6565b612b0b8a84016126a8565b81526040612b1a8185016126a8565b8b8301526060808501358284015260809150612b378286016126a8565b9083015260a0612b488582016126a8565b8284015260c0915081850135818401525060e0612b66818601612a47565b828401526101009150818501358184015250610120808501358284015283850135935089841115612b9957600091508182fd5b612ba78f8d86880101612762565b908301525085525050918601918601612ac7565b5098975050505050505050565b600080600080600060a08688031215612be057600080fd5b85356001600160401b0380821115612bf757600080fd5b612c0389838a01612762565b96506020880135915080821115612c1957600080fd5b612c2589838a01612762565b95506040880135945060608801359150612c3e82612693565b90925060808701359080821115612c5457600080fd5b50612a3a88828901612762565b600060808284031215612c7357600080fd5b50919050565b600060a08284031215612c7357600080fd5b600060608284031215612c7357600080fd5b600080600060608486031215612cb257600080fd5b83356001600160401b0380821115612cc957600080fd5b612cd587838801612c61565b94506020860135915080821115612ceb57600080fd5b612cf787838801612c79565b93506040860135915080821115612d0d57600080fd5b50612d1a86828701612c8b565b9150509250925092565b60008060408385031215612d3757600080fd5b82356001600160401b0380821115612d4e57600080fd5b612d5a86838701612c61565b93506020850135915080821115612d7057600080fd5b50612d7d85828601612c79565b9150509250929050565b600080600060e08486031215612d9c57600080fd5b83356001600160401b0380821115612db357600080fd5b612dbf87838801612c61565b94506020860135915080821115612dd557600080fd5b50612de286828701612c79565b925050612df28560408601612c79565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215612edb57600080fd5b8351612ee681612693565b6020850151909350612ef781612693565b80925050604084015190509250925092565b60005b83811015612f24578181015183820152602001612f0c565b838111156120e45750506000910152565b60008151808452612f4d816020860160208601612f09565b601f01601f19169290920160200192915050565b600061012060018060a01b03808d1684528b6020850152808b166040850152808a1660608501525087608084015260ff871660a08401528560c08401528460e084015280610100840152612fb781840185612f35565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415612ff157612ff1612fc7565b5060010190565b6000821982111561300b5761300b612fc7565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c0602084015261307e60c0840189612f35565b83810360408501526130908189612f35565b90508187166060850152818616608085015283810360a08501526130b48186612f35565b9a9950505050505050505050565b8015158114611afb57600080fd5b6000602082840312156130e257600080fd5b8151612512816130c2565b6080815260006131006080830187612f35565b6001600160a01b038616602084015282810360408401526131218186612f35565b905082810360608401526126368185612f35565b6000808335601e1984360301811261314c57600080fd5b8301803591506001600160401b0382111561316657600080fd5b60200191503681900382131561317b57600080fd5b9250929050565b6000808335601e1984360301811261319957600080fd5b8301803591506001600160401b038211156131b357600080fd5b6020019150600581901b360382131561317b57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261320b57600080fd5b83016020810192503590506001600160401b0381111561322a57600080fd5b80360383131561317b57600080fd5b8183526000602080850194508260005b8581101561327757813561325c81612693565b6001600160a01b031687529582019590820190600101613249565b509495945050505050565b81835260006001600160fb1b0383111561329b57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b878110156133085782840389526132e982886131f4565b6132f48682846131cb565b9a87019a95505050908401906001016132d2565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156133765785840360bf19018352613354828f6131f4565b61335f8682846131cb565b955050506020928301929190910190600101613339565b505050828103604084015261338c81898b613239565b905082810360608401526133a1818789613282565b90508281036080840152612fb78185876132b8565b6000602082840312156133c857600080fd5b815161251281612693565b6001600160a01b03861681526060602082018190526000906133f89083018688613239565b828103604084015261340b818587613282565b98975050505050505050565b60006020828403121561342957600080fd5b5051919050565b60608152600061344460608301888a613282565b8281036020840152613457818789613282565b9050828103604084015261346c818587613239565b9998505050505050505050565b60006020828403121561348b57600080fd5b8135612512816130c2565b6080815260006134a96080830187612f35565b82810360208401526134bb8187612f35565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b838110156132775781516001600160a01b0316875295820195908201906001016134f1565b600081518084526020808501945080840160005b838110156132775781518752958201959082019060010161352a565b600081518084526020808501808196508360051b8101915082860160005b8581101561330857828403895261357c848351612f35565b98850198935090840190600101613564565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b838110156135e55760bf198887030185526135d3868351612f35565b955093820193908201906001016135b7565b5050858403818701525050506135fb81886134dd565b9050828103604084015261360f81876134dd565b905082810360608401526136238186613516565b9050828103608084015261340b8185613546565b60008251613649818460208701612f09565b9190910192915050565b6020815260006125126020830184612f3556fea2646970667358221220f4abf2a09272c4e73999373d321776187583bec5d10085cc5b62620c7317b4f964736f6c634300080a0033", + "bytecode": "0x60806040526000600a553480156200001657600080fd5b5060405162004132380380620041328339810160408190526200003991620005ab565b6200004433620001be565b600180556001600160a01b038316158015906200006957506001600160a01b03821615155b80156200007e57506001600160a01b03841615155b620001065760405162461bcd60e51b815260206004820152604760248201527f4552433732314454466163746f72793a20496e76616c69642074656d706c617460448201527f6520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f72206064820152666164647265737360c81b608482015260a4015b60405180910390fd5b6001600160a01b0381166200016e5760405162461bcd60e51b815260206004820152602760248201527f4552433732314454466163746f72793a20496e76616c696420726f75746572206044820152666164647265737360c81b6064820152608401620000fd565b62000179846200020e565b506200018583620003d1565b50600c80546001600160a01b039283166001600160a01b03199182161790915560028054939092169216919091179055506200062f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080546001600160a01b031633146200025a5760405162461bcd60e51b81526020600482018190526024820152600080516020620041128339815191526044820152606401620000fd565b6001600160a01b038216620002d85760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f5745440000000000000000006064820152608401620000fd565b813b620003285760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e545241435400000000006044820152606401620000fd565b6001600560008282546200033d919062000608565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a350506005545b919050565b600080546001600160a01b031633146200041d5760405162461bcd60e51b81526020600482018190526024820152600080516020620041128339815191526044820152606401620000fd565b6001600160a01b0382166200049b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c61746520616460448201527f6472657373283029204e4f5420414c4c4f5745440000000000000000000000006064820152608401620000fd565b813b620004eb5760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e54524143540000000000006044820152606401620000fd565b6001600b600082825462000500919062000608565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b54919050565b80516001600160a01b0381168114620003cc57600080fd5b60008060008060808587031215620005c257600080fd5b620005cd8562000593565b9350620005dd6020860162000593565b9250620005ed6040860162000593565b9150620005fd6060860162000593565b905092959194509250565b600082198211156200062a57634e487b7160e01b600052601160045260246000fd5b500190565b613ad3806200063f6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638989886911610104578063b9cd2264116100a2578063e5fc01f011610071578063e5fc01f01461051d578063f2fde38b14610525578063f887ea4014610538578063fd024d6a1461054b57600080fd5b8063b9cd226414610496578063bbf8d71f146104cf578063c6cf868a146104e2578063e3491099146104ea57600080fd5b806394051699116100de578063940516991461040957806395c603051461043e578063a33ef2a614610446578063b3440f8c1461045957600080fd5b806389898869146103d25780638da5cb5b146103e55780638f6051af146103f657600080fd5b80635c70598211610171578063732752141161014b57806373275214146103455780637b20bccf14610358578063809d81051461036b57806382c442041461037e57600080fd5b80635c7059821461030c578063715018a61461031457806372f670f01461031c57600080fd5b80632515422e116101ad5780632515422e1461025a57806326705c3c1461026d5780633315efd114610284578063557fcfb0146102e157600080fd5b8063042ab9b3146101d45780630ffda88714610212578063226e761514610227575b600080fd5b6101e76101e23660046128d1565b61055e565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b6102256102203660046128d1565b6105e5565b005b61024a61023536600461290a565b60096020526000908152604090205460ff1681565b6040519015158152602001610209565b610225610268366004612b20565b61062a565b610276600b5481565b604051908152602001610209565b6101e76102923660046128d1565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102f46102ef366004612d6f565b61090b565b6040516001600160a01b039091168152602001610209565b600354610276565b6102256109ac565b6102f461032a36600461290a565b6008602052600090815260409020546001600160a01b031681565b610225610353366004612e97565b6109e2565b61027661036636600461290a565b610e24565b6102256103793660046128d1565b610fb7565b6103b361038c3660046128d1565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b039093168352901515602083015201610209565b6102f46103e0366004612fa1565b611029565b6000546001600160a01b03166102f4565b61027661040436600461290a565b6112fa565b6103b36104173660046128d1565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610276565b6102256104543660046128d1565b611495565b61046c610467366004613076565b61150d565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610209565b6104a96104a4366004613076565b6118a3565b604080516001600160a01b03948516815293909216602084015290820152606001610209565b6102256104dd3660046128d1565b611a26565b600a54610276565b6104fd6104f83660046130fd565b611ae2565b604080516001600160a01b03938416815292909116602083015201610209565b600554610276565b61022561053336600461290a565b611cba565b600c546102f4906001600160a01b031681565b6104fd610559366004613160565b611d55565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b5483118015906105ba57508215155b6105df5760405162461bcd60e51b81526004016105d6906131d4565b60405180910390fd5b92915050565b6000546001600160a01b0316331461060f5760405162461bcd60e51b81526004016105d69061321d565b6000908152600760205260409020805460ff60a01b19169055565b6002600154141561064d5760405162461bcd60e51b81526004016105d690613252565b60026001558051603210156106a45760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105d6565b60005b81518110156109035760008282815181106106c4576106c4613289565b60200260200101516040015160400151118015610715575060006001600160a01b03168282815181106106f9576106f9613289565b602002602001015160400151602001516001600160a01b031614155b8015610755575060006001600160a01b031682828151811061073957610739613289565b602002602001015160400151600001516001600160a01b031614155b15610839576107bc333084848151811061077157610771613289565b6020026020010151604001516040015185858151811061079357610793613289565b602002602001015160400151602001516001600160a01b0316611feb909392919063ffffffff16565b6108398282815181106107d1576107d1613289565b6020026020010151600001518383815181106107ef576107ef613289565b6020026020010151604001516040015184848151811061081157610811613289565b602002602001015160400151602001516001600160a01b031661205c9092919063ffffffff16565b81818151811061084b5761084b613289565b6020026020010151600001516001600160a01b031663361fef4983838151811061087757610877613289565b60200260200101516020015184848151811061089557610895613289565b6020026020010151604001516040518363ffffffff1660e01b81526004016108be92919061336b565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b5050505080806108fb9061339a565b9150506106a7565b505060018055565b3360008181526008602052604081205490916001600160a01b03909116146109945760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105d6565b6109a286868686863361210e565b9695505050505050565b6000546001600160a01b031633146109d65760405162461bcd60e51b81526004016105d69061321d565b6109e060006123f3565b565b60026001541415610a055760405162461bcd60e51b81526004016105d690613252565b6002600155805160321015610a5c5760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105d6565b60005b8151811015610903576000806000848481518110610a7f57610a7f613289565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec91906133b5565b925092509250600081118015610b0a57506001600160a01b03821615155b8015610b1e57506001600160a01b03831615155b15610b6a57610b386001600160a01b038316333084611feb565b610b6a858581518110610b4d57610b4d613289565b6020908102919091010151516001600160a01b038416908361205c565b6000858581518110610b7e57610b7e613289565b60200260200101516060015160400151118015610bcf575060006001600160a01b0316858581518110610bb357610bb3613289565b602002602001015160600151602001516001600160a01b031614155b8015610c0f575060006001600160a01b0316858581518110610bf357610bf3613289565b602002602001015160600151600001516001600160a01b031614155b15610cf357610c763330878781518110610c2b57610c2b613289565b60200260200101516060015160400151888881518110610c4d57610c4d613289565b602002602001015160600151602001516001600160a01b0316611feb909392919063ffffffff16565b610cf3858581518110610c8b57610c8b613289565b602002602001015160000151868681518110610ca957610ca9613289565b60200260200101516060015160400151878781518110610ccb57610ccb613289565b602002602001015160600151602001516001600160a01b031661205c9092919063ffffffff16565b610d383330670de0b6b3a7640000888881518110610d1357610d13613289565b6020026020010151600001516001600160a01b0316611feb909392919063ffffffff16565b848481518110610d4a57610d4a613289565b6020026020010151600001516001600160a01b031663363bdb46868681518110610d7657610d76613289565b602002602001015160200151878781518110610d9457610d94613289565b602002602001015160400151888881518110610db257610db2613289565b6020026020010151606001516040518463ffffffff1660e01b8152600401610ddc939291906133f8565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b505050505050508080610e1c9061339a565b915050610a5f565b600080546001600160a01b03163314610e4f5760405162461bcd60e51b81526004016105d69061321d565b6001600160a01b038216610ec25760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105d6565b813b610f105760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105d6565b6001600b6000828254610f23919061341f565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610fe15760405162461bcd60e51b81526004016105d69061321d565b6005548111158015610ff257508015155b61100e5760405162461bcd60e51b81526004016105d690613437565b6000908152600660205260409020805460ff60a01b19169055565b6000600554841115801561103c57508315155b6110585760405162461bcd60e51b81526004016105d690613437565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082018190526110f45760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105d6565b80516110ff90612443565b91506001600160a01b03821661117f576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105d6565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d7906111d59033908c908c9030908c908c90600401613483565b6020604051808303816000875af11580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121891906134f7565b6112815760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105d6565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b896040516112ce9493929190613514565b60405180910390a36001600360008282546112e9919061341f565b909155509298975050505050505050565b600080546001600160a01b031633146113255760405162461bcd60e51b81526004016105d69061321d565b6001600160a01b0382166113a15760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105d6565b813b6113ef5760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105d6565b600160056000828254611402919061341f565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146114bf5760405162461bcd60e51b81526004016105d69061321d565b60055481111580156114d057508015155b6114ec5760405162461bcd60e51b81526004016105d690613437565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156115355760405162461bcd60e51b81526004016105d690613252565b60026001556115a83330611549878061355c565b600481811061155a5761155a613289565b90506020020135878060400190611571919061355c565b600181811061158257611582613289565b9050602002016020810190611597919061290a565b6001600160a01b0316929190611feb565b6116786115b587806135ac565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115f79250505060208901896135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061163e60608c018c6135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b92506001600160a01b03831663e38d7cad8635611698602089018961355c565b6116a560408b018b61355c565b6116b260608d018d61355c565b6116bf60808f018f61355c565b6040518a63ffffffff1660e01b81526004016116e39998979695949392919061373c565b6020604051808303816000875af1158015611702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172691906137ed565b600c549092506117a1906001600160a01b0316611743868061355c565b600481811061175457611754613289565b9050602002013586806040019061176b919061355c565b600181811061177c5761177c613289565b9050602002016020810190611791919061290a565b6001600160a01b0316919061205c565b6001600160a01b038216635bfe4da06117ba868061355c565b6117c7602089018961355c565b6117d460408b018b61355c565b6040518763ffffffff1660e01b81526004016117f59695949392919061380a565b6020604051808303816000875af1158015611814573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183891906137ed565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0384169063fe1ec88090602401600060405180830381600087803b15801561187c57600080fd5b505af1158015611890573d6000803e3d6000fd5b5050600180555092969195509350915050565b6000806000600260015414156118cb5760405162461bcd60e51b81526004016105d690613252565b60026001556118dd6115b587806135ac565b92506001600160a01b03831663e38d7cad86356118fd602089018961355c565b61190a60408b018b61355c565b61191760608d018d61355c565b61192460808f018f61355c565b6040518a63ffffffff1660e01b81526004016119489998979695949392919061373c565b6020604051808303816000875af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b91906137ed565b91506001600160a01b038216638b96412b6119a9602087018761290a565b6119b6602088018861355c565b6119c360408a018a61355c565b6040518663ffffffff1660e01b81526004016119e3959493929190613853565b6020604051808303816000875af1158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118389190613897565b6000546001600160a01b03163314611a505760405162461bcd60e51b81526004016105d69061321d565b600b548111158015611a6157508015155b611ac15760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105d6565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b60008060026001541415611b085760405162461bcd60e51b81526004016105d690613252565b6002600155611ba3611b1a85806135ac565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5c9250505060208701876135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408701353061163e60608a018a6135ac565b91506001600160a01b03821663e38d7cad8435611bc3602087018761355c565b611bd0604089018961355c565b611bdd60608b018b61355c565b611bea60808d018d61355c565b6040518a63ffffffff1660e01b8152600401611c0e9998979695949392919061373c565b6020604051808303816000875af1158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5191906137ed565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0383169063fe1ec88090602401600060405180830381600087803b158015611c9557600080fd5b505af1158015611ca9573d6000803e3d6000fd5b505060018055509194909350915050565b6000546001600160a01b03163314611ce45760405162461bcd60e51b81526004016105d69061321d565b6001600160a01b038116611d495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d6565b611d52816123f3565b50565b60008060026001541415611d7b5760405162461bcd60e51b81526004016105d690613252565b6002600155611e16611d8d86806135ac565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dcf9250505060208801886135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061163e60608b018b6135ac565b91506001600160a01b03821663e38d7cad8535611e36602088018861355c565b611e4360408a018a61355c565b611e5060608c018c61355c565b611e5d60808e018e61355c565b6040518a63ffffffff1660e01b8152600401611e819998979695949392919061373c565b6020604051808303816000875af1158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec491906137ed565b90506001600160a01b03811663191c918a611ee2602086018661290a565b60208601356040870135611efc6080890160608a016138b0565b611f0c60a08a0160808b0161290a565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611f6c57600080fd5b505af1158015611f80573d6000803e3d6000fd5b50506040516301fc3d9160e71b81523060048201526001600160a01b038516925063fe1ec8809150602401600060405180830381600087803b158015611fc557600080fd5b505af1158015611fd9573d6000803e3d6000fd5b50506001805550919590945092505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120569085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526124d3565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156120ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d19190613897565b6120db919061341f565b6040516001600160a01b03851660248201526044810182905290915061205690859063095ea7b360e01b9060640161201f565b60008360008151811061212357612123613289565b6020026020010151600014156121895760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105d6565b600b54871115801561219a57508615155b6121b65760405162461bcd60e51b81526004016105d6906131d4565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820181905261224f5760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105d6565b805161225a90612443565b6001600160a01b0381166000818152600960205260409020805460ff191660011790559092506122f25760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105d6565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b908960008151811061233e5761233e613289565b60200260200101518a60018151811061235957612359613289565b60200260200101518960008151811061237457612374613289565b60200260200101518860405161238d94939291906138cd565b60405180910390a36001600a60008282546123a8919061341f565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b0384166080820152606081018590526123e783826125aa565b50509695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b6000612528826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127579092919063ffffffff16565b8051909150156125a5578080602001905181019061254691906134f7565b6125a55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d6565b505050565b60408051600380825260808201909252839160009190602082016060803683370190505090508260800151816000815181106125e8576125e8613289565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061261957612619613289565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061264a5761264a613289565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b81526004016126ae9594939291906139c5565b6020604051808303816000875af11580156126cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f191906134f7565b6120565760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105d6565b60606127668484600085612770565b90505b9392505050565b6060824710156127d15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d6565b843b61281f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d6565b600080866001600160a01b0316858760405161283b9190613a6e565b60006040518083038185875af1925050503d8060008114612878576040519150601f19603f3d011682016040523d82523d6000602084013e61287d565b606091505b509150915061288d828286612898565b979650505050505050565b606083156128a7575081612769565b8251156128b75782518084602001fd5b8160405162461bcd60e51b81526004016105d69190613a8a565b6000602082840312156128e357600080fd5b5035919050565b6001600160a01b0381168114611d5257600080fd5b8035610fb2816128ea565b60006020828403121561291c57600080fd5b8135612769816128ea565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171561296057612960612927565b60405290565b604051606081016001600160401b038111828210171561296057612960612927565b604051608081016001600160401b038111828210171561296057612960612927565b604051601f8201601f191681016001600160401b03811182821017156129d2576129d2612927565b604052919050565b60006001600160401b038211156129f3576129f3612927565b5060051b60200190565b803560ff81168114610fb257600080fd5b600082601f830112612a1f57600080fd5b81356001600160401b03811115612a3857612a38612927565b612a4b601f8201601f19166020016129aa565b818152846020838601011115612a6057600080fd5b816020850160208301376000918101602001919091529392505050565b60006101008284031215612a9057600080fd5b612a9861293d565b9050612aa3826128ff565b8152612ab1602083016128ff565b602082015260408201356040820152612acc606083016129fd565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e08201356001600160401b03811115612b0857600080fd5b612b1484828501612a0e565b60e08301525092915050565b60006020808385031215612b3357600080fd5b82356001600160401b0380821115612b4a57600080fd5b818501915085601f830112612b5e57600080fd5b8135612b71612b6c826129da565b6129aa565b81815260059190911b83018401908481019088831115612b9057600080fd5b8585015b83811015612c1957803585811115612bac5760008081fd5b86016060818c03601f1901811315612bc45760008081fd5b612bcc612966565b89830135612bd9816128ea565b81526040838101358b830152918301359188831115612bf85760008081fd5b612c068e8c85870101612a7d565b9082015285525050918601918601612b94565b5098975050505050505050565b600082601f830112612c3757600080fd5b81356020612c47612b6c836129da565b82815260059290921b84018101918181019086841115612c6657600080fd5b8286015b84811015612c8a578035612c7d816128ea565b8352918301918301612c6a565b509695505050505050565b600082601f830112612ca657600080fd5b81356020612cb6612b6c836129da565b82815260059290921b84018101918181019086841115612cd557600080fd5b8286015b84811015612c8a5780358352918301918301612cd9565b600082601f830112612d0157600080fd5b81356020612d11612b6c836129da565b82815260059290921b84018101918181019086841115612d3057600080fd5b8286015b84811015612c8a5780356001600160401b03811115612d535760008081fd5b612d618986838b0101612a0e565b845250918301918301612d34565b600080600080600060a08688031215612d8757600080fd5b853594506020808701356001600160401b0380821115612da657600080fd5b818901915089601f830112612dba57600080fd5b8135612dc8612b6c826129da565b81815260059190911b8301840190848101908c831115612de757600080fd5b8585015b83811015612e1f57803585811115612e035760008081fd5b612e118f89838a0101612a0e565b845250918601918601612deb565b50985050506040890135925080831115612e3857600080fd5b612e448a848b01612c26565b95506060890135925080831115612e5a57600080fd5b612e668a848b01612c95565b94506080890135925080831115612e7c57600080fd5b5050612e8a88828901612cf0565b9150509295509295909350565b60006020808385031215612eaa57600080fd5b82356001600160401b0380821115612ec157600080fd5b818501915085601f830112612ed557600080fd5b8135612ee3612b6c826129da565b81815260059190911b83018401908481019088831115612f0257600080fd5b8585015b83811015612c1957803585811115612f1e5760008081fd5b86016080818c03601f1901811315612f365760008081fd5b612f3e612988565b89830135612f4b816128ea565b8152604083810135612f5c816128ea565b828c015260608481013582840152928401359289841115612f7f57600091508182fd5b612f8d8f8d86880101612a7d565b908301525085525050918601918601612f06565b600080600080600060a08688031215612fb957600080fd5b85356001600160401b0380821115612fd057600080fd5b612fdc89838a01612a0e565b96506020880135915080821115612ff257600080fd5b612ffe89838a01612a0e565b95506040880135945060608801359150613017826128ea565b9092506080870135908082111561302d57600080fd5b50612e8a88828901612a0e565b60006080828403121561304c57600080fd5b50919050565b600060a0828403121561304c57600080fd5b60006060828403121561304c57600080fd5b60008060006060848603121561308b57600080fd5b83356001600160401b03808211156130a257600080fd5b6130ae8783880161303a565b945060208601359150808211156130c457600080fd5b6130d087838801613052565b935060408601359150808211156130e657600080fd5b506130f386828701613064565b9150509250925092565b6000806040838503121561311057600080fd5b82356001600160401b038082111561312757600080fd5b6131338683870161303a565b9350602085013591508082111561314957600080fd5b5061315685828601613052565b9150509250929050565b600080600060e0848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b6131988783880161303a565b945060208601359150808211156131ae57600080fd5b506131bb86828701613052565b9250506131cb8560408601613052565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60005b838110156132ba5781810151838201526020016132a2565b838111156120565750506000910152565b600081518084526132e381602086016020860161329f565b601f01601f19169290920160200192915050565b600061010060018060a01b03808451168552806020850151166020860152506040830151604085015260ff60608401511660608501526080830151608085015260a083015160a085015260c083015160c085015260e08301518160e0860152613362828601826132cb565b95945050505050565b82815260406020820152600061276660408301846132f7565b634e487b7160e01b600052601160045260246000fd5b60006000198214156133ae576133ae613384565b5060010190565b6000806000606084860312156133ca57600080fd5b83516133d5816128ea565b60208501519093506133e6816128ea565b80925050604084015190509250925092565b60018060a01b038416815282602082015260606040820152600061336260608301846132f7565b6000821982111561343257613432613384565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c060208401526134a560c08401896132cb565b83810360408501526134b781896132cb565b90508187166060850152818616608085015283810360a08501526134db81866132cb565b9a9950505050505050505050565b8015158114611d5257600080fd5b60006020828403121561350957600080fd5b8151612769816134e9565b60808152600061352760808301876132cb565b6001600160a01b0386166020840152828103604084015261354881866132cb565b9050828103606084015261288d81856132cb565b6000808335601e1984360301811261357357600080fd5b8301803591506001600160401b0382111561358d57600080fd5b6020019150600581901b36038213156135a557600080fd5b9250929050565b6000808335601e198436030181126135c357600080fd5b8301803591506001600160401b038211156135dd57600080fd5b6020019150368190038213156135a557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261363257600080fd5b83016020810192503590506001600160401b0381111561365157600080fd5b8036038313156135a557600080fd5b8183526000602080850194508260005b8581101561369e578135613683816128ea565b6001600160a01b031687529582019590820190600101613670565b509495945050505050565b81835260006001600160fb1b038311156136c257600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b8781101561372f578284038952613710828861361b565b61371b8682846135f2565b9a87019a95505050908401906001016136f9565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c81101561379d5785840360bf1901835261377b828f61361b565b6137868682846135f2565b955050506020928301929190910190600101613760565b50505082810360408401526137b381898b613660565b905082810360608401526137c88187896136a9565b905082810360808401526137dd8185876136df565b9c9b505050505050505050505050565b6000602082840312156137ff57600080fd5b8151612769816128ea565b60608152600061381e60608301888a6136a9565b82810360208401526138318187896136a9565b90508281036040840152613846818587613660565b9998505050505050505050565b6001600160a01b03861681526060602082018190526000906138789083018688613660565b828103604084015261388b8185876136a9565b98975050505050505050565b6000602082840312156138a957600080fd5b5051919050565b6000602082840312156138c257600080fd5b8135612769816134e9565b6080815260006138e060808301876132cb565b82810360208401526138f281876132cb565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b8381101561369e5781516001600160a01b031687529582019590820190600101613928565b600081518084526020808501945080840160005b8381101561369e57815187529582019590820190600101613961565b600081518084526020808501808196508360051b8101915082860160005b8581101561372f5782840389526139b38483516132cb565b9885019893509084019060010161399b565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b83811015613a1c5760bf19888703018552613a0a8683516132cb565b955093820193908201906001016139ee565b505085840381870152505050613a328188613914565b90508281036040840152613a468187613914565b90508281036060840152613a5a818661394d565b9050828103608084015261388b818561397d565b60008251613a8081846020870161329f565b9190910192915050565b60208152600061276960208301846132cb56fea2646970667358221220e5230d911a5f424516f8a305573b55003357dca8e5841e5fe2956a268271ed2164736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638989886911610104578063b9cd2264116100a2578063e5fc01f011610071578063e5fc01f01461051d578063f2fde38b14610525578063f887ea4014610538578063fd024d6a1461054b57600080fd5b8063b9cd226414610496578063bbf8d71f146104cf578063c6cf868a146104e2578063e3491099146104ea57600080fd5b806394051699116100de578063940516991461040957806395c603051461043e578063a33ef2a614610446578063b3440f8c1461045957600080fd5b806389898869146103d25780638da5cb5b146103e55780638f6051af146103f657600080fd5b80635c70598211610171578063732752141161014b57806373275214146103455780637b20bccf14610358578063809d81051461036b57806382c442041461037e57600080fd5b80635c7059821461030c578063715018a61461031457806372f670f01461031c57600080fd5b80632515422e116101ad5780632515422e1461025a57806326705c3c1461026d5780633315efd114610284578063557fcfb0146102e157600080fd5b8063042ab9b3146101d45780630ffda88714610212578063226e761514610227575b600080fd5b6101e76101e23660046128d1565b61055e565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b6102256102203660046128d1565b6105e5565b005b61024a61023536600461290a565b60096020526000908152604090205460ff1681565b6040519015158152602001610209565b610225610268366004612b20565b61062a565b610276600b5481565b604051908152602001610209565b6101e76102923660046128d1565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102f46102ef366004612d6f565b61090b565b6040516001600160a01b039091168152602001610209565b600354610276565b6102256109ac565b6102f461032a36600461290a565b6008602052600090815260409020546001600160a01b031681565b610225610353366004612e97565b6109e2565b61027661036636600461290a565b610e24565b6102256103793660046128d1565b610fb7565b6103b361038c3660046128d1565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b039093168352901515602083015201610209565b6102f46103e0366004612fa1565b611029565b6000546001600160a01b03166102f4565b61027661040436600461290a565b6112fa565b6103b36104173660046128d1565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610276565b6102256104543660046128d1565b611495565b61046c610467366004613076565b61150d565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610209565b6104a96104a4366004613076565b6118a3565b604080516001600160a01b03948516815293909216602084015290820152606001610209565b6102256104dd3660046128d1565b611a26565b600a54610276565b6104fd6104f83660046130fd565b611ae2565b604080516001600160a01b03938416815292909116602083015201610209565b600554610276565b61022561053336600461290a565b611cba565b600c546102f4906001600160a01b031681565b6104fd610559366004613160565b611d55565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b5483118015906105ba57508215155b6105df5760405162461bcd60e51b81526004016105d6906131d4565b60405180910390fd5b92915050565b6000546001600160a01b0316331461060f5760405162461bcd60e51b81526004016105d69061321d565b6000908152600760205260409020805460ff60a01b19169055565b6002600154141561064d5760405162461bcd60e51b81526004016105d690613252565b60026001558051603210156106a45760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105d6565b60005b81518110156109035760008282815181106106c4576106c4613289565b60200260200101516040015160400151118015610715575060006001600160a01b03168282815181106106f9576106f9613289565b602002602001015160400151602001516001600160a01b031614155b8015610755575060006001600160a01b031682828151811061073957610739613289565b602002602001015160400151600001516001600160a01b031614155b15610839576107bc333084848151811061077157610771613289565b6020026020010151604001516040015185858151811061079357610793613289565b602002602001015160400151602001516001600160a01b0316611feb909392919063ffffffff16565b6108398282815181106107d1576107d1613289565b6020026020010151600001518383815181106107ef576107ef613289565b6020026020010151604001516040015184848151811061081157610811613289565b602002602001015160400151602001516001600160a01b031661205c9092919063ffffffff16565b81818151811061084b5761084b613289565b6020026020010151600001516001600160a01b031663361fef4983838151811061087757610877613289565b60200260200101516020015184848151811061089557610895613289565b6020026020010151604001516040518363ffffffff1660e01b81526004016108be92919061336b565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b5050505080806108fb9061339a565b9150506106a7565b505060018055565b3360008181526008602052604081205490916001600160a01b03909116146109945760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105d6565b6109a286868686863361210e565b9695505050505050565b6000546001600160a01b031633146109d65760405162461bcd60e51b81526004016105d69061321d565b6109e060006123f3565b565b60026001541415610a055760405162461bcd60e51b81526004016105d690613252565b6002600155805160321015610a5c5760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105d6565b60005b8151811015610903576000806000848481518110610a7f57610a7f613289565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec91906133b5565b925092509250600081118015610b0a57506001600160a01b03821615155b8015610b1e57506001600160a01b03831615155b15610b6a57610b386001600160a01b038316333084611feb565b610b6a858581518110610b4d57610b4d613289565b6020908102919091010151516001600160a01b038416908361205c565b6000858581518110610b7e57610b7e613289565b60200260200101516060015160400151118015610bcf575060006001600160a01b0316858581518110610bb357610bb3613289565b602002602001015160600151602001516001600160a01b031614155b8015610c0f575060006001600160a01b0316858581518110610bf357610bf3613289565b602002602001015160600151600001516001600160a01b031614155b15610cf357610c763330878781518110610c2b57610c2b613289565b60200260200101516060015160400151888881518110610c4d57610c4d613289565b602002602001015160600151602001516001600160a01b0316611feb909392919063ffffffff16565b610cf3858581518110610c8b57610c8b613289565b602002602001015160000151868681518110610ca957610ca9613289565b60200260200101516060015160400151878781518110610ccb57610ccb613289565b602002602001015160600151602001516001600160a01b031661205c9092919063ffffffff16565b610d383330670de0b6b3a7640000888881518110610d1357610d13613289565b6020026020010151600001516001600160a01b0316611feb909392919063ffffffff16565b848481518110610d4a57610d4a613289565b6020026020010151600001516001600160a01b031663363bdb46868681518110610d7657610d76613289565b602002602001015160200151878781518110610d9457610d94613289565b602002602001015160400151888881518110610db257610db2613289565b6020026020010151606001516040518463ffffffff1660e01b8152600401610ddc939291906133f8565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b505050505050508080610e1c9061339a565b915050610a5f565b600080546001600160a01b03163314610e4f5760405162461bcd60e51b81526004016105d69061321d565b6001600160a01b038216610ec25760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105d6565b813b610f105760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105d6565b6001600b6000828254610f23919061341f565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610fe15760405162461bcd60e51b81526004016105d69061321d565b6005548111158015610ff257508015155b61100e5760405162461bcd60e51b81526004016105d690613437565b6000908152600660205260409020805460ff60a01b19169055565b6000600554841115801561103c57508315155b6110585760405162461bcd60e51b81526004016105d690613437565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082018190526110f45760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105d6565b80516110ff90612443565b91506001600160a01b03821661117f576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105d6565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d7906111d59033908c908c9030908c908c90600401613483565b6020604051808303816000875af11580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121891906134f7565b6112815760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105d6565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b896040516112ce9493929190613514565b60405180910390a36001600360008282546112e9919061341f565b909155509298975050505050505050565b600080546001600160a01b031633146113255760405162461bcd60e51b81526004016105d69061321d565b6001600160a01b0382166113a15760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105d6565b813b6113ef5760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105d6565b600160056000828254611402919061341f565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146114bf5760405162461bcd60e51b81526004016105d69061321d565b60055481111580156114d057508015155b6114ec5760405162461bcd60e51b81526004016105d690613437565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156115355760405162461bcd60e51b81526004016105d690613252565b60026001556115a83330611549878061355c565b600481811061155a5761155a613289565b90506020020135878060400190611571919061355c565b600181811061158257611582613289565b9050602002016020810190611597919061290a565b6001600160a01b0316929190611feb565b6116786115b587806135ac565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115f79250505060208901896135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061163e60608c018c6135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b92506001600160a01b03831663e38d7cad8635611698602089018961355c565b6116a560408b018b61355c565b6116b260608d018d61355c565b6116bf60808f018f61355c565b6040518a63ffffffff1660e01b81526004016116e39998979695949392919061373c565b6020604051808303816000875af1158015611702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172691906137ed565b600c549092506117a1906001600160a01b0316611743868061355c565b600481811061175457611754613289565b9050602002013586806040019061176b919061355c565b600181811061177c5761177c613289565b9050602002016020810190611791919061290a565b6001600160a01b0316919061205c565b6001600160a01b038216635bfe4da06117ba868061355c565b6117c7602089018961355c565b6117d460408b018b61355c565b6040518763ffffffff1660e01b81526004016117f59695949392919061380a565b6020604051808303816000875af1158015611814573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183891906137ed565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0384169063fe1ec88090602401600060405180830381600087803b15801561187c57600080fd5b505af1158015611890573d6000803e3d6000fd5b5050600180555092969195509350915050565b6000806000600260015414156118cb5760405162461bcd60e51b81526004016105d690613252565b60026001556118dd6115b587806135ac565b92506001600160a01b03831663e38d7cad86356118fd602089018961355c565b61190a60408b018b61355c565b61191760608d018d61355c565b61192460808f018f61355c565b6040518a63ffffffff1660e01b81526004016119489998979695949392919061373c565b6020604051808303816000875af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b91906137ed565b91506001600160a01b038216638b96412b6119a9602087018761290a565b6119b6602088018861355c565b6119c360408a018a61355c565b6040518663ffffffff1660e01b81526004016119e3959493929190613853565b6020604051808303816000875af1158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118389190613897565b6000546001600160a01b03163314611a505760405162461bcd60e51b81526004016105d69061321d565b600b548111158015611a6157508015155b611ac15760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105d6565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b60008060026001541415611b085760405162461bcd60e51b81526004016105d690613252565b6002600155611ba3611b1a85806135ac565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5c9250505060208701876135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408701353061163e60608a018a6135ac565b91506001600160a01b03821663e38d7cad8435611bc3602087018761355c565b611bd0604089018961355c565b611bdd60608b018b61355c565b611bea60808d018d61355c565b6040518a63ffffffff1660e01b8152600401611c0e9998979695949392919061373c565b6020604051808303816000875af1158015611c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5191906137ed565b6040516301fc3d9160e71b81523060048201529091506001600160a01b0383169063fe1ec88090602401600060405180830381600087803b158015611c9557600080fd5b505af1158015611ca9573d6000803e3d6000fd5b505060018055509194909350915050565b6000546001600160a01b03163314611ce45760405162461bcd60e51b81526004016105d69061321d565b6001600160a01b038116611d495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d6565b611d52816123f3565b50565b60008060026001541415611d7b5760405162461bcd60e51b81526004016105d690613252565b6002600155611e16611d8d86806135ac565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dcf9250505060208801886135ac565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061163e60608b018b6135ac565b91506001600160a01b03821663e38d7cad8535611e36602088018861355c565b611e4360408a018a61355c565b611e5060608c018c61355c565b611e5d60808e018e61355c565b6040518a63ffffffff1660e01b8152600401611e819998979695949392919061373c565b6020604051808303816000875af1158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec491906137ed565b90506001600160a01b03811663191c918a611ee2602086018661290a565b60208601356040870135611efc6080890160608a016138b0565b611f0c60a08a0160808b0161290a565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611f6c57600080fd5b505af1158015611f80573d6000803e3d6000fd5b50506040516301fc3d9160e71b81523060048201526001600160a01b038516925063fe1ec8809150602401600060405180830381600087803b158015611fc557600080fd5b505af1158015611fd9573d6000803e3d6000fd5b50506001805550919590945092505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120569085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526124d3565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156120ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d19190613897565b6120db919061341f565b6040516001600160a01b03851660248201526044810182905290915061205690859063095ea7b360e01b9060640161201f565b60008360008151811061212357612123613289565b6020026020010151600014156121895760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105d6565b600b54871115801561219a57508615155b6121b65760405162461bcd60e51b81526004016105d6906131d4565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820181905261224f5760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105d6565b805161225a90612443565b6001600160a01b0381166000818152600960205260409020805460ff191660011790559092506122f25760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105d6565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b908960008151811061233e5761233e613289565b60200260200101518a60018151811061235957612359613289565b60200260200101518960008151811061237457612374613289565b60200260200101518860405161238d94939291906138cd565b60405180910390a36001600a60008282546123a8919061341f565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b0384166080820152606081018590526123e783826125aa565b50509695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b6000612528826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127579092919063ffffffff16565b8051909150156125a5578080602001905181019061254691906134f7565b6125a55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d6565b505050565b60408051600380825260808201909252839160009190602082016060803683370190505090508260800151816000815181106125e8576125e8613289565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061261957612619613289565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061264a5761264a613289565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b81526004016126ae9594939291906139c5565b6020604051808303816000875af11580156126cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f191906134f7565b6120565760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105d6565b60606127668484600085612770565b90505b9392505050565b6060824710156127d15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d6565b843b61281f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d6565b600080866001600160a01b0316858760405161283b9190613a6e565b60006040518083038185875af1925050503d8060008114612878576040519150601f19603f3d011682016040523d82523d6000602084013e61287d565b606091505b509150915061288d828286612898565b979650505050505050565b606083156128a7575081612769565b8251156128b75782518084602001fd5b8160405162461bcd60e51b81526004016105d69190613a8a565b6000602082840312156128e357600080fd5b5035919050565b6001600160a01b0381168114611d5257600080fd5b8035610fb2816128ea565b60006020828403121561291c57600080fd5b8135612769816128ea565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171561296057612960612927565b60405290565b604051606081016001600160401b038111828210171561296057612960612927565b604051608081016001600160401b038111828210171561296057612960612927565b604051601f8201601f191681016001600160401b03811182821017156129d2576129d2612927565b604052919050565b60006001600160401b038211156129f3576129f3612927565b5060051b60200190565b803560ff81168114610fb257600080fd5b600082601f830112612a1f57600080fd5b81356001600160401b03811115612a3857612a38612927565b612a4b601f8201601f19166020016129aa565b818152846020838601011115612a6057600080fd5b816020850160208301376000918101602001919091529392505050565b60006101008284031215612a9057600080fd5b612a9861293d565b9050612aa3826128ff565b8152612ab1602083016128ff565b602082015260408201356040820152612acc606083016129fd565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e08201356001600160401b03811115612b0857600080fd5b612b1484828501612a0e565b60e08301525092915050565b60006020808385031215612b3357600080fd5b82356001600160401b0380821115612b4a57600080fd5b818501915085601f830112612b5e57600080fd5b8135612b71612b6c826129da565b6129aa565b81815260059190911b83018401908481019088831115612b9057600080fd5b8585015b83811015612c1957803585811115612bac5760008081fd5b86016060818c03601f1901811315612bc45760008081fd5b612bcc612966565b89830135612bd9816128ea565b81526040838101358b830152918301359188831115612bf85760008081fd5b612c068e8c85870101612a7d565b9082015285525050918601918601612b94565b5098975050505050505050565b600082601f830112612c3757600080fd5b81356020612c47612b6c836129da565b82815260059290921b84018101918181019086841115612c6657600080fd5b8286015b84811015612c8a578035612c7d816128ea565b8352918301918301612c6a565b509695505050505050565b600082601f830112612ca657600080fd5b81356020612cb6612b6c836129da565b82815260059290921b84018101918181019086841115612cd557600080fd5b8286015b84811015612c8a5780358352918301918301612cd9565b600082601f830112612d0157600080fd5b81356020612d11612b6c836129da565b82815260059290921b84018101918181019086841115612d3057600080fd5b8286015b84811015612c8a5780356001600160401b03811115612d535760008081fd5b612d618986838b0101612a0e565b845250918301918301612d34565b600080600080600060a08688031215612d8757600080fd5b853594506020808701356001600160401b0380821115612da657600080fd5b818901915089601f830112612dba57600080fd5b8135612dc8612b6c826129da565b81815260059190911b8301840190848101908c831115612de757600080fd5b8585015b83811015612e1f57803585811115612e035760008081fd5b612e118f89838a0101612a0e565b845250918601918601612deb565b50985050506040890135925080831115612e3857600080fd5b612e448a848b01612c26565b95506060890135925080831115612e5a57600080fd5b612e668a848b01612c95565b94506080890135925080831115612e7c57600080fd5b5050612e8a88828901612cf0565b9150509295509295909350565b60006020808385031215612eaa57600080fd5b82356001600160401b0380821115612ec157600080fd5b818501915085601f830112612ed557600080fd5b8135612ee3612b6c826129da565b81815260059190911b83018401908481019088831115612f0257600080fd5b8585015b83811015612c1957803585811115612f1e5760008081fd5b86016080818c03601f1901811315612f365760008081fd5b612f3e612988565b89830135612f4b816128ea565b8152604083810135612f5c816128ea565b828c015260608481013582840152928401359289841115612f7f57600091508182fd5b612f8d8f8d86880101612a7d565b908301525085525050918601918601612f06565b600080600080600060a08688031215612fb957600080fd5b85356001600160401b0380821115612fd057600080fd5b612fdc89838a01612a0e565b96506020880135915080821115612ff257600080fd5b612ffe89838a01612a0e565b95506040880135945060608801359150613017826128ea565b9092506080870135908082111561302d57600080fd5b50612e8a88828901612a0e565b60006080828403121561304c57600080fd5b50919050565b600060a0828403121561304c57600080fd5b60006060828403121561304c57600080fd5b60008060006060848603121561308b57600080fd5b83356001600160401b03808211156130a257600080fd5b6130ae8783880161303a565b945060208601359150808211156130c457600080fd5b6130d087838801613052565b935060408601359150808211156130e657600080fd5b506130f386828701613064565b9150509250925092565b6000806040838503121561311057600080fd5b82356001600160401b038082111561312757600080fd5b6131338683870161303a565b9350602085013591508082111561314957600080fd5b5061315685828601613052565b9150509250929050565b600080600060e0848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b6131988783880161303a565b945060208601359150808211156131ae57600080fd5b506131bb86828701613052565b9250506131cb8560408601613052565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60005b838110156132ba5781810151838201526020016132a2565b838111156120565750506000910152565b600081518084526132e381602086016020860161329f565b601f01601f19169290920160200192915050565b600061010060018060a01b03808451168552806020850151166020860152506040830151604085015260ff60608401511660608501526080830151608085015260a083015160a085015260c083015160c085015260e08301518160e0860152613362828601826132cb565b95945050505050565b82815260406020820152600061276660408301846132f7565b634e487b7160e01b600052601160045260246000fd5b60006000198214156133ae576133ae613384565b5060010190565b6000806000606084860312156133ca57600080fd5b83516133d5816128ea565b60208501519093506133e6816128ea565b80925050604084015190509250925092565b60018060a01b038416815282602082015260606040820152600061336260608301846132f7565b6000821982111561343257613432613384565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c060208401526134a560c08401896132cb565b83810360408501526134b781896132cb565b90508187166060850152818616608085015283810360a08501526134db81866132cb565b9a9950505050505050505050565b8015158114611d5257600080fd5b60006020828403121561350957600080fd5b8151612769816134e9565b60808152600061352760808301876132cb565b6001600160a01b0386166020840152828103604084015261354881866132cb565b9050828103606084015261288d81856132cb565b6000808335601e1984360301811261357357600080fd5b8301803591506001600160401b0382111561358d57600080fd5b6020019150600581901b36038213156135a557600080fd5b9250929050565b6000808335601e198436030181126135c357600080fd5b8301803591506001600160401b038211156135dd57600080fd5b6020019150368190038213156135a557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261363257600080fd5b83016020810192503590506001600160401b0381111561365157600080fd5b8036038313156135a557600080fd5b8183526000602080850194508260005b8581101561369e578135613683816128ea565b6001600160a01b031687529582019590820190600101613670565b509495945050505050565b81835260006001600160fb1b038311156136c257600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b8781101561372f578284038952613710828861361b565b61371b8682846135f2565b9a87019a95505050908401906001016136f9565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c81101561379d5785840360bf1901835261377b828f61361b565b6137868682846135f2565b955050506020928301929190910190600101613760565b50505082810360408401526137b381898b613660565b905082810360608401526137c88187896136a9565b905082810360808401526137dd8185876136df565b9c9b505050505050505050505050565b6000602082840312156137ff57600080fd5b8151612769816128ea565b60608152600061381e60608301888a6136a9565b82810360208401526138318187896136a9565b90508281036040840152613846818587613660565b9998505050505050505050565b6001600160a01b03861681526060602082018190526000906138789083018688613660565b828103604084015261388b8185876136a9565b98975050505050505050565b6000602082840312156138a957600080fd5b5051919050565b6000602082840312156138c257600080fd5b8135612769816134e9565b6080815260006138e060808301876132cb565b82810360208401526138f281876132cb565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b8381101561369e5781516001600160a01b031687529582019590820190600101613928565b600081518084526020808501945080840160005b8381101561369e57815187529582019590820190600101613961565b600081518084526020808501808196508360051b8101915082860160005b8581101561372f5782840389526139b38483516132cb565b9885019893509084019060010161399b565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b83811015613a1c5760bf19888703018552613a0a8683516132cb565b955093820193908201906001016139ee565b505085840381870152505050613a328188613914565b90508281036040840152613a468187613914565b90508281036060840152613a5a818661394d565b9050828103608084015261388b818561397d565b60008251613a8081846020870161329f565b9190910192915050565b60208152600061276960208301846132cb56fea2646970667358221220e5230d911a5f424516f8a305573b55003357dca8e5841e5fe2956a268271ed2164736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/abis/ERC721RolesAddress.json b/abis/ERC721RolesAddress.json index 0765388..b3b462b 100644 --- a/abis/ERC721RolesAddress.json +++ b/abis/ERC721RolesAddress.json @@ -1,422 +1,422 @@ { - "_format": "hh-sol-artifact-1", - "contractName": "ERC721RolesAddress", - "sourceName": "contracts/utils/ERC721RolesAddress.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedTo725StoreList", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedToCreateERC20List", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedToMetadataList", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "CleanedPermissions", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedFrom725StoreList", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedFromCreateERC20List", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedFromMetadataList", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedManager", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_allowedAddress", - "type": "address" - } - ], - "name": "addTo725StoreList", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_allowedAddress", - "type": "address" - } - ], - "name": "addToCreateERC20List", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_allowedAddress", - "type": "address" - } - ], - "name": "addToMetadataList", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "auth", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getPermissions", - "outputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "manager", - "type": "bool" - }, - { - "internalType": "bool", - "name": "deployERC20", - "type": "bool" - }, - { - "internalType": "bool", - "name": "updateMetadata", - "type": "bool" - }, - { - "internalType": "bool", - "name": "store", - "type": "bool" - } - ], - "internalType": "struct ERC721RolesAddress.Roles", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_allowedAddress", - "type": "address" - } - ], - "name": "removeFrom725StoreList", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_allowedAddress", - "type": "address" - } - ], - "name": "removeFromCreateERC20List", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_allowedAddress", - "type": "address" - } - ], - "name": "removeFromMetadataList", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061090f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063431053ac1161005b578063431053ac1461019f5780634a63740a146101b2578063b0c41ead146101c5578063fe1ec880146101f057600080fd5b806310c558bf1461008d578063160a7925146100a257806319c186e514610179578063273e06b31461018c575b600080fd5b6100a061009b366004610859565b610203565b005b6101356100b0366004610859565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b0316600090815260208181526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b604051610170919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b60405180910390f35b6100a0610187366004610859565b6102f0565b6100a061019a366004610859565b6103ca565b6100a06101ad366004610859565b6104fc565b6100a06101c0366004610859565b61062d565b6101d86101d3366004610889565b610703565b6040516001600160a01b039091168152602001610170565b6100a06101fe366004610859565b61072d565b3360009081526020819052604090205460ff1615156001146102405760405162461bcd60e51b8152600401610237906108a2565b60405180910390fd5b6001600160a01b038116600081815260208190526040808220805462ff000019166201000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa4906102e49042904390918252602082015260400190565b60405180910390a35050565b3360009081526020819052604090205460ff1615156001146103245760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805463ff0000001916630100000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee906102e49042904390918252602082015260400190565b3360009081526020819052604090205460ff1615156001148061041b5750336001600160a01b03821614801561041b5750336000908152602081905260409020546301000000900460ff1615156001145b1561047f576001600160a01b03811660008181526020818152604091829020805463ff000000191681558251428152439281019290925292339290917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf391016102e4565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610237565b3360009081526020819052604090205460ff1615156001148061054c5750336001600160a01b03821614801561054c57503360009081526020819052604090205462010000900460ff1615156001145b156105af576001600160a01b03811660008181526020818152604091829020805462ff0000191681558251428152439281019290925292339290917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b91016102e4565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610237565b3360009081526020819052604090205460ff1615156001146106615760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805461ff00191661010017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f906102e49042904390918252602082015260400190565b6001818154811061071357600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526020819052604090205460ff1615156001148061077d5750336001600160a01b03821614801561077d57503360009081526020819052604090205460ff6101009091041615156001145b156107df576001600160a01b03811660008181526020818152604091829020805461ff00191681558251428152439281019290925292339290917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899791016102e4565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610237565b60006020828403121561086b57600080fd5b81356001600160a01b038116811461088257600080fd5b9392505050565b60006020828403121561089b57600080fd5b5035919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e414745520060408201526060019056fea2646970667358221220248218b22aec91e387c93ed97ce3e042c3ec436875947fa77390c9eaed3129ec64736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063431053ac1161005b578063431053ac1461019f5780634a63740a146101b2578063b0c41ead146101c5578063fe1ec880146101f057600080fd5b806310c558bf1461008d578063160a7925146100a257806319c186e514610179578063273e06b31461018c575b600080fd5b6100a061009b366004610859565b610203565b005b6101356100b0366004610859565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b0316600090815260208181526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b604051610170919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b60405180910390f35b6100a0610187366004610859565b6102f0565b6100a061019a366004610859565b6103ca565b6100a06101ad366004610859565b6104fc565b6100a06101c0366004610859565b61062d565b6101d86101d3366004610889565b610703565b6040516001600160a01b039091168152602001610170565b6100a06101fe366004610859565b61072d565b3360009081526020819052604090205460ff1615156001146102405760405162461bcd60e51b8152600401610237906108a2565b60405180910390fd5b6001600160a01b038116600081815260208190526040808220805462ff000019166201000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa4906102e49042904390918252602082015260400190565b60405180910390a35050565b3360009081526020819052604090205460ff1615156001146103245760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805463ff0000001916630100000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee906102e49042904390918252602082015260400190565b3360009081526020819052604090205460ff1615156001148061041b5750336001600160a01b03821614801561041b5750336000908152602081905260409020546301000000900460ff1615156001145b1561047f576001600160a01b03811660008181526020818152604091829020805463ff000000191681558251428152439281019290925292339290917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf391016102e4565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610237565b3360009081526020819052604090205460ff1615156001148061054c5750336001600160a01b03821614801561054c57503360009081526020819052604090205462010000900460ff1615156001145b156105af576001600160a01b03811660008181526020818152604091829020805462ff0000191681558251428152439281019290925292339290917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b91016102e4565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610237565b3360009081526020819052604090205460ff1615156001146106615760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805461ff00191661010017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f906102e49042904390918252602082015260400190565b6001818154811061071357600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526020819052604090205460ff1615156001148061077d5750336001600160a01b03821614801561077d57503360009081526020819052604090205460ff6101009091041615156001145b156107df576001600160a01b03811660008181526020818152604091829020805461ff00191681558251428152439281019290925292339290917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899791016102e4565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610237565b60006020828403121561086b57600080fd5b81356001600160a01b038116811461088257600080fd5b9392505050565b60006020828403121561089b57600080fd5b5035919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e414745520060408201526060019056fea2646970667358221220248218b22aec91e387c93ed97ce3e042c3ec436875947fa77390c9eaed3129ec64736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} - } \ No newline at end of file + "_format": "hh-sol-artifact-1", + "contractName": "ERC721RolesAddress", + "sourceName": "contracts/utils/ERC721RolesAddress.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedManager", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedTo725StoreList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedToCreateERC20List", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedToMetadataList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "CleanedPermissions", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedFrom725StoreList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedFromCreateERC20List", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedFromMetadataList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedManager", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "addTo725StoreList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "addToCreateERC20List", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "addToMetadataList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "auth", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getPermissions", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "manager", + "type": "bool" + }, + { + "internalType": "bool", + "name": "deployERC20", + "type": "bool" + }, + { + "internalType": "bool", + "name": "updateMetadata", + "type": "bool" + }, + { + "internalType": "bool", + "name": "store", + "type": "bool" + } + ], + "internalType": "struct ERC721RolesAddress.Roles", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "removeFrom725StoreList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "removeFromCreateERC20List", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "removeFromMetadataList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061090f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063431053ac1161005b578063431053ac1461019f5780634a63740a146101b2578063b0c41ead146101c5578063fe1ec880146101f057600080fd5b806310c558bf1461008d578063160a7925146100a257806319c186e514610179578063273e06b31461018c575b600080fd5b6100a061009b366004610859565b610203565b005b6101356100b0366004610859565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b0316600090815260208181526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b604051610170919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b60405180910390f35b6100a0610187366004610859565b6102f0565b6100a061019a366004610859565b6103ca565b6100a06101ad366004610859565b6104fc565b6100a06101c0366004610859565b61062d565b6101d86101d3366004610889565b610703565b6040516001600160a01b039091168152602001610170565b6100a06101fe366004610859565b61072d565b3360009081526020819052604090205460ff1615156001146102405760405162461bcd60e51b8152600401610237906108a2565b60405180910390fd5b6001600160a01b038116600081815260208190526040808220805462ff000019166201000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa4906102e49042904390918252602082015260400190565b60405180910390a35050565b3360009081526020819052604090205460ff1615156001146103245760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805463ff0000001916630100000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee906102e49042904390918252602082015260400190565b3360009081526020819052604090205460ff1615156001148061041b5750336001600160a01b03821614801561041b5750336000908152602081905260409020546301000000900460ff1615156001145b1561047f576001600160a01b03811660008181526020818152604091829020805463ff000000191681558251428152439281019290925292339290917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf391016102e4565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610237565b3360009081526020819052604090205460ff1615156001148061054c5750336001600160a01b03821614801561054c57503360009081526020819052604090205462010000900460ff1615156001145b156105af576001600160a01b03811660008181526020818152604091829020805462ff0000191681558251428152439281019290925292339290917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b91016102e4565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610237565b3360009081526020819052604090205460ff1615156001146106615760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805461ff00191661010017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f906102e49042904390918252602082015260400190565b6001818154811061071357600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526020819052604090205460ff1615156001148061077d5750336001600160a01b03821614801561077d57503360009081526020819052604090205460ff6101009091041615156001145b156107df576001600160a01b03811660008181526020818152604091829020805461ff00191681558251428152439281019290925292339290917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899791016102e4565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610237565b60006020828403121561086b57600080fd5b81356001600160a01b038116811461088257600080fd5b9392505050565b60006020828403121561089b57600080fd5b5035919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e414745520060408201526060019056fea2646970667358221220cabd9a0cec3e45ffba59a95bb3ddc1d19aa1c82a0724b54aabff16b67c302d2c64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063431053ac1161005b578063431053ac1461019f5780634a63740a146101b2578063b0c41ead146101c5578063fe1ec880146101f057600080fd5b806310c558bf1461008d578063160a7925146100a257806319c186e514610179578063273e06b31461018c575b600080fd5b6100a061009b366004610859565b610203565b005b6101356100b0366004610859565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b0316600090815260208181526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b604051610170919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b60405180910390f35b6100a0610187366004610859565b6102f0565b6100a061019a366004610859565b6103ca565b6100a06101ad366004610859565b6104fc565b6100a06101c0366004610859565b61062d565b6101d86101d3366004610889565b610703565b6040516001600160a01b039091168152602001610170565b6100a06101fe366004610859565b61072d565b3360009081526020819052604090205460ff1615156001146102405760405162461bcd60e51b8152600401610237906108a2565b60405180910390fd5b6001600160a01b038116600081815260208190526040808220805462ff000019166201000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa4906102e49042904390918252602082015260400190565b60405180910390a35050565b3360009081526020819052604090205460ff1615156001146103245760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805463ff0000001916630100000017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee906102e49042904390918252602082015260400190565b3360009081526020819052604090205460ff1615156001148061041b5750336001600160a01b03821614801561041b5750336000908152602081905260409020546301000000900460ff1615156001145b1561047f576001600160a01b03811660008181526020818152604091829020805463ff000000191681558251428152439281019290925292339290917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf391016102e4565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610237565b3360009081526020819052604090205460ff1615156001148061054c5750336001600160a01b03821614801561054c57503360009081526020819052604090205462010000900460ff1615156001145b156105af576001600160a01b03811660008181526020818152604091829020805462ff0000191681558251428152439281019290925292339290917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b91016102e4565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610237565b3360009081526020819052604090205460ff1615156001146106615760405162461bcd60e51b8152600401610237906108a2565b6001600160a01b038116600081815260208190526040808220805461ff00191661010017815560018054808201825593527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f906102e49042904390918252602082015260400190565b6001818154811061071357600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526020819052604090205460ff1615156001148061077d5750336001600160a01b03821614801561077d57503360009081526020819052604090205460ff6101009091041615156001145b156107df576001600160a01b03811660008181526020818152604091829020805461ff00191681558251428152439281019290925292339290917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899791016102e4565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610237565b60006020828403121561086b57600080fd5b81356001600160a01b038116811461088257600080fd5b9392505050565b60006020828403121561089b57600080fd5b5035919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e414745520060408201526060019056fea2646970667358221220cabd9a0cec3e45ffba59a95bb3ddc1d19aa1c82a0724b54aabff16b67c302d2c64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/abis/ERC721Template.json b/abis/ERC721Template.json index 37d3530..7872265 100644 --- a/abis/ERC721Template.json +++ b/abis/ERC721Template.json @@ -300,9 +300,9 @@ }, { "indexed": false, - "internalType": "bytes", + "internalType": "bytes32", "name": "metaDataHash", - "type": "bytes" + "type": "bytes32" }, { "indexed": false, @@ -386,9 +386,9 @@ }, { "indexed": false, - "internalType": "bytes", + "internalType": "bytes32", "name": "metaDataHash", - "type": "bytes" + "type": "bytes32" }, { "indexed": false, @@ -406,6 +406,43 @@ "name": "MetadataUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "validator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "metaDataHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "MetadataValidated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1309,9 +1346,36 @@ "type": "bytes" }, { - "internalType": "bytes", + "internalType": "bytes32", "name": "_metaDataHash", - "type": "bytes" + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct ERC721Template.metaDataProof[]", + "name": "_metadataProofs", + "type": "tuple[]" } ], "name": "setMetaData", @@ -1319,6 +1383,88 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "metaDataState", + "type": "uint8" + }, + { + "internalType": "string", + "name": "metaDataDecryptorUrl", + "type": "string" + }, + { + "internalType": "string", + "name": "metaDataDecryptorAddress", + "type": "string" + }, + { + "internalType": "bytes", + "name": "flags", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "metaDataHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct ERC721Template.metaDataProof[]", + "name": "metadataProofs", + "type": "tuple[]" + } + ], + "internalType": "struct ERC721Template.metaDataAndTokenURI", + "name": "_metaDataAndTokenURI", + "type": "tuple" + } + ], + "name": "setMetaDataAndTokenURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1463,8 +1609,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252600881526754656d706c61746560c01b60208083019182528351808501909452600e84526d15195b5c1b185d1954de5b589bdb60921b908401528151919291620000689160009162000131565b5080516200007e90600190602084019062000131565b50620000959150632260147f60e11b9050620000ad565b620000a7632bd57b7360e01b620000ad565b62000214565b6001600160e01b031980821614156200010c5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600a60205260409020805460ff19166001179055565b8280546200013f90620001d7565b90600052602060002090601f016020900481019282620001635760008555620001ae565b82601f106200017e57805160ff1916838001178555620001ae565b82800160010185558215620001ae579182015b82811115620001ae57825182559160200191906001019062000191565b50620001bc929150620001c0565b5090565b5b80821115620001bc5760008155600101620001c1565b600181811c90821680620001ec57607f821691505b602082108114156200020e57634e487b7160e01b600052602260045260246000fd5b50919050565b613f9480620002246000396000f3fe60806040526004361061025d5760003560e01c806355f804b311610143578063a22cb465116100bb578063d2786ba411610077578063d2786ba41461082d578063d8053ad314610852578063e086e5ec14610871578063e38d7cad14610879578063e985e9c514610899578063fe1ec880146108e257005b8063a22cb46514610780578063ac18de43146107a0578063b0c41ead146107c0578063c55f8126146107e0578063c87b56dd146107f3578063ccd7d4761461081357005b806370a082311161010a57806370a082311461069157806370c166d7146106bf57806382cf129d146106df57806390184b02146106f457806395d89b411461072d57806396fb3eaf1461074257005b806355f804b3146105ef5780635d1ca6311461060f5780635d5dea24146106315780636352211e1461065157806367530a611461067157005b8063273e06b3116101d6578063466bca021161019d578063466bca0214610538578063467c97f51461055a5780634a63740a1461057a5780634b2ee5e91461059a5780634f189cb2146105ba57806354f6127f146105cf57005b8063273e06b3146104a05780632d06177a146104c0578063392e53cd146104e057806342842e0e146104f8578063431053ac1461051857005b80630e57c7e8116102255780630e57c7e81461032357806310c558bf14610343578063160a792514610363578063162094c41461044057806319c186e51461046057806323b872dd1461048057005b806301ffc9a71461025f57806306fdde0314610294578063081812fc146102b6578063095ea7b3146102ee5780630e05662e1461030e575b005b34801561026b57600080fd5b5061027f61027a366004613580565b610902565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610942565b60405161028b9190613a93565b3480156102c257600080fd5b506102d66102d136600461351b565b6109d4565b6040516001600160a01b03909116815260200161028b565b3480156102fa57600080fd5b5061025d6103093660046134ef565b610a6e565b34801561031a57600080fd5b506102a9610b84565b34801561032f57600080fd5b5061025d61033e366004613534565b610c12565b34801561034f57600080fd5b5061025d61035e366004613332565b610c8c565b34801561036f57600080fd5b5061040561037e366004613332565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600860209081526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b60405161028b919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b34801561044c57600080fd5b5061025d61045b366004613729565b610d5f565b34801561046c57600080fd5b5061025d61047b366004613332565b610dee565b34801561048c57600080fd5b5061025d61049b3660046133ac565b610eb7565b3480156104ac57600080fd5b5061025d6104bb366004613332565b610f89565b3480156104cc57600080fd5b5061025d6104db366004613332565b6110c2565b3480156104ec57600080fd5b50600e5460ff1661027f565b34801561050457600080fd5b5061025d6105133660046133ac565b611105565b34801561052457600080fd5b5061025d610533366004613332565b6111ab565b34801561054457600080fd5b5061054d6112e0565b60405161028b9190613a32565b34801561056657600080fd5b5061025d610575366004613770565b611341565b34801561058657600080fd5b5061025d610595366004613332565b6113d1565b3480156105a657600080fd5b506013546102d6906001600160a01b031681565b3480156105c657600080fd5b5061025d611496565b3480156105db57600080fd5b506102a96105ea36600461351b565b6114da565b3480156105fb57600080fd5b5061025d61060a3660046135ba565b61157c565b34801561061b57600080fd5b5060015b60405160ff909116815260200161028b565b34801561063d57600080fd5b5061025d61064c36600461378b565b6115cd565b34801561065d57600080fd5b506102d661066c36600461351b565b611709565b34801561067d57600080fd5b5061025d61068c366004613534565b611780565b34801561069d57600080fd5b506106b16106ac366004613332565b6117f5565b60405190815260200161028b565b3480156106cb57600080fd5b5061027f6106da366004613420565b61187c565b3480156106eb57600080fd5b506102a9611999565b34801561070057600080fd5b5061027f61070f366004613332565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561073957600080fd5b506102a96119a6565b34801561074e57600080fd5b5061027f61075d366004613332565b6001600160a01b0316600090815260086020526040902054610100900460ff1690565b34801561078c57600080fd5b5061025d61079b3660046133ed565b6119b5565b3480156107ac57600080fd5b5061025d6107bb366004613332565b611a73565b3480156107cc57600080fd5b506102d66107db36600461351b565b611ab6565b61025d6107ee3660046135ef565b611ae0565b3480156107ff57600080fd5b506102a961080e36600461351b565b611b28565b34801561081f57600080fd5b5060115461061f9060ff1681565b34801561083957600080fd5b50610842611c86565b60405161028b9493929190613aa6565b34801561085e57600080fd5b50600e5461027f90610100900460ff1681565b61025d611dd6565b34801561088557600080fd5b506102d6610894366004613659565b611e18565b3480156108a557600080fd5b5061027f6108b4366004613373565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156108ee57600080fd5b5061025d6108fd366004613332565b611f9e565b60006301ffc9a760e01b6001600160e01b03198316148061093c57506001600160e01b031982166000908152600a602052604090205460ff165b92915050565b6060600c805461095190613e7b565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90613e7b565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610a525760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610a7982611709565b9050806001600160a01b0316836001600160a01b03161415610ae75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a49565b336001600160a01b0382161480610b035750610b0381336108b4565b610b755760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a49565b610b7f83836120ce565b505050565b60108054610b9190613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90613e7b565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081565b3360009081526014602052604090205460ff161515600114610c815760405162461bcd60e51b815260206004820152602260248201527f45524337323154656d706c6174653a204e4f5420455243323020436f6e74726160448201526118dd60f21b6064820152608401610a49565b610b7f83838361213c565b3360009081526008602052604090205460ff161515600114610cc05760405162461bcd60e51b8152600401610a4990613c7d565b6001600160a01b038116600081815260086020526040808220805462ff0000191662010000178155600980546001810182559352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa490610d539042904390918252602082015260400190565b60405180910390a35050565b610d696001611709565b6001600160a01b0316336001600160a01b031614610d995760405162461bcd60e51b8152600401610a4990613ba9565b610da38282612195565b336001600160a01b03167f6de6cd3982065cbd31e789e3109106f4d76d1c8a46e85262045cf947fb3fd4ed82844243604051610de29493929190613ae7565b60405180910390a25050565b3360009081526008602052604090205460ff161515600114610e225760405162461bcd60e51b8152600401610a4990613c7d565b6001600160a01b038116600081815260086020526040808220805463ff00000019166301000000178155600980546001810182559352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee90610d539042904390918252602082015260400190565b80600114610ed75760405162461bcd60e51b8152600401610a4990613be0565b610f41610f3c6012805480602002602001604051908101604052809291908181526020018280548015610f3357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f15575b50505050505190565b61222f565b610f496122c0565b610f54838383612371565b610f5d826123b2565b506001600160a01b03166000908152600860205260409020805463ffffff001916630101010017905550565b3360009081526008602052604090205460ff16151560011480610fda5750336001600160a01b038216148015610fda5750336000908152600860205260409020546301000000900460ff1615156001145b15611042576001600160a01b03811660008181526008602052604090819020805463ff000000191681559051909133917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf390610d539042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610a49565b50565b6110cc6001611709565b6001600160a01b0316336001600160a01b0316146110fc5760405162461bcd60e51b8152600401610a4990613ba9565b6110bf816123b2565b806001146111255760405162461bcd60e51b8152600401610a4990613be0565b611188610f3c6012805480602002602001604051908101604052809291908181526020018280548015610f33576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f155750505050505190565b6111906122c0565b610f5483838360405180602001604052806000815250612443565b3360009081526008602052604090205460ff161515600114806111fb5750336001600160a01b0382161480156111fb57503360009081526008602052604090205462010000900460ff1615156001145b15611262576001600160a01b03811660008181526008602052604090819020805462ff0000191681559051909133917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b90610d539042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610a49565b606060128054806020026020016040519081016040528092919081815260200182805480156109ca57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131a575050505050905090565b3360009081526008602052604090205462010000900460ff16151560011461137b5760405162461bcd60e51b8152600401610a4990613b16565b6011805460ff191660ff831690811790915560408051918252426020830152439082015233907fa8336411cc72db0e5bdc4dff989eeb35879bafaceffb59b54b37645c3395adb99060600160405180910390a250565b3360009081526008602052604090205460ff1615156001146114055760405162461bcd60e51b8152600401610a4990613c7d565b6001600160a01b038116600081815260086020526040808220805461ff001916610100178155600980546001810182559352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f90610d539042904390918252602082015260400190565b6114a06001611709565b6001600160a01b0316336001600160a01b0316146114d05760405162461bcd60e51b8152600401610a4990613ba9565b6114d86122c0565b565b6000818152600b602052604090208054606091906114f790613e7b565b80601f016020809104026020016040519081016040528092919081815260200182805461152390613e7b565b80156115705780601f1061154557610100808354040283529160200191611570565b820191906000526020600020905b81548152906001019060200180831161155357829003601f168201915b50505050509050919050565b6115866001611709565b6001600160a01b0316336001600160a01b0316146115b65760405162461bcd60e51b8152600401610a4990613ba9565b80516115c99060029060208401906130da565b5050565b3360009081526008602052604090205462010000900460ff1615156001146116075760405162461bcd60e51b8152600401610a4990613b16565b6011805460ff191660ff8d16179055611622600f8b8b61315e565b5061162f6010898961315e565b50600e54610100900460ff166116a857336001600160a01b03167fa6105ba66a6e1cdef460b79cd6a2d14f58d1e224f5bb876fafc51535c34ab6848c8c8c8a8a8a8a8a8a424360405161168c9b9a99989796959493929190613d65565b60405180910390a2600e805461ff0019166101001790556116fc565b60115460405133917f4248722dac0ab49fef08643fbc510e0343175ae223ca5cc5420e118e46da7198916116f39160ff16908e908e908c908c908c908c908c908c9042904390613d65565b60405180910390a25b5050505050505050505050565b6000818152600360205260408120546001600160a01b03168061093c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a49565b336000908152600860205260409020546301000000900460ff161515600114610c815760405162461bcd60e51b815260206004820152602160248201527f45524337323154656d706c6174653a204e4f542053544f5245205550444154456044820152602960f91b6064820152608401610a49565b60006001600160a01b0382166118605760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a49565b506001600160a01b031660009081526004602052604090205490565b600e5460009060ff16156118ed5760405162461bcd60e51b815260206004820152603260248201527f45524337323154656d706c6174653a20746f6b656e20696e7374616e636520616044820152711b1c9958591e481a5b9a5d1a585b1a5e995960721b6064820152608401610a49565b60006119678a8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152508b925089915061247b9050565b905080801561197e57506001600160a01b03841615155b1561198c5761198c84611405565b9998505050505050505050565b600f8054610b9190613e7b565b6060600d805461095190613e7b565b6001600160a01b038216331415611a0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a49565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610d53565b611a7d6001611709565b6001600160a01b0316336001600160a01b031614611aad5760405162461bcd60e51b8152600401610a4990613ba9565b6110bf816125bb565b60098181548110611ac657600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff161515600114611b145760405162461bcd60e51b8152600401610a4990613c7d565b611b21858585858561261b565b5050505050565b6000818152600360205260409020546060906001600160a01b0316611ba75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a49565b60008281526007602052604081208054611bc090613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bec90613e7b565b8015611c395780601f10611c0e57610100808354040283529160200191611c39565b820191906000526020600020905b815481529060010190602001808311611c1c57829003601f168201915b505050505090506000611c4a612844565b825190915015611c7f578082604051602001611c679291906139c6565b60405160208183030381529060405292505050919050565b5092915050565b606080600080600f6010601160009054906101000a900460ff16600e60019054906101000a900460ff16838054611cbc90613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce890613e7b565b8015611d355780601f10611d0a57610100808354040283529160200191611d35565b820191906000526020600020905b815481529060010190602001808311611d1857829003601f168201915b50505050509350828054611d4890613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7490613e7b565b8015611dc15780601f10611d9657610100808354040283529160200191611dc1565b820191906000526020600020905b815481529060010190602001808311611da457829003601f168201915b50505050509250935093509350935090919293565b611de06001611709565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156110bf573d6000803e3d6000fd5b3360009081526008602052604081205460ff610100909104161515600114611e915760405162461bcd60e51b815260206004820152602660248201527f45524337323154656d706c6174653a204e4f542045524332304445504c4f5945604482015265525f524f4c4560d01b6064820152608401610a49565b601154604051630557fcfb60e41b815260009161010090046001600160a01b03169063557fcfb090611ed7908e908e908e908e908e908e908e908e908e90600401613cb4565b602060405180830381600087803b158015611ef157600080fd5b505af1158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190613356565b6001600160a01b0381166000818152601460205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b03191690911790559150509998505050505050505050565b3360009081526008602052604090205460ff16151560011480611fee5750336001600160a01b038216148015611fee57503360009081526008602052604090205460ff6101009091041615156001145b15612054576001600160a01b03811660008181526008602052604090819020805461ff00191681559051909133917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899790610d539042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610a49565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061210382611709565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000838152600b6020526040902061215590838361315e565b50827fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28383604051612188929190613a7f565b60405180910390a2505050565b6000828152600360205260409020546001600160a01b03166122105760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a49565b60008281526007602090815260409091208251610b7f928401906130da565b60005b818110156115c9576012818154811061224d5761224d613ee7565b6000918252602082200154604080516382c03da560e01b815290516001600160a01b03909216926382c03da59260048084019382900301818387803b15801561229557600080fd5b505af11580156122a9573d6000803e3d6000fd5b5050505080806122b890613eb6565b915050612232565b60005b60095481101561232857600060086000600984815481106122e6576122e6613ee7565b60009182526020808320909101546001600160a01b031683528201929092526040019020805463ffffffff19169055508061232081613eb6565b9150506122c3565b50612335600960006131d2565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b61237b3382612853565b6123975760405162461bcd60e51b8152600401610a4990613c2c565b610b7f83838360405180602001604052806000815250612443565b6001600160a01b038116600081815260086020526040808220805460ff191660019081178255600980549182018155909352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917faf8fc8b6726138c96881c895390a08e9d91a94c288f06281e7f9821c49c7155b90610d539042904390918252602082015260400190565b61244d3383612853565b6124695760405162461bcd60e51b8152600401610a4990613c2c565b6124758484848461294a565b50505050565b60006001600160a01b0386166124ea5760405162461bcd60e51b815260206004820152602e60248201527f45524337323154656d706c6174653a3a20496e76616c6964206d696e7465722c60448201526d20207a65726f206164647265737360901b6064820152608401610a49565b84516124fd90600c9060208801906130da565b50835161251190600d9060208701906130da565b5060118054610100600160a81b0319166101006001600160a01b03861602179055604080516020810191829052600090819052612550916002916130da565b50600e805461ffff1916600190811790915561256d90879061297d565b612576866123b2565b6001600160a01b0386166000908152600860205260409020805463ffffff00191663010101001781556125aa600184612195565b5050600e5460ff1695945050505050565b6001600160a01b03811660008181526008602052604090819020805460ff191681559051909133917fb572db0e6da4924b771ed1712b980d48b5992b9a1c27aede55fbb3318c48996a90610d539042904390918252602082015260400190565b82846001600160a01b0316867f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b88585604051612658929190613a7f565b60405180910390a460006109c45a6126709190613e38565b9050856126c0576126ba858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612997915050565b5061283c565b6003861415612709576126ba8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129af92505050565b60028614156127fd57600061276084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275b925060209150879050613e38565b612a4b565b905060006127af85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506127aa91506020905088613e38565b612aa9565b905060006127be878484612bb6565b6040519091506001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a250505061283c565b60405162461bcd60e51b815260206004820152601460248201527357726f6e67206f7065726174696f6e207479706560601b6044820152606401610a49565b505050505050565b60606002805461095190613e7b565b6000818152600360205260408120546001600160a01b03166128cc5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a49565b60006128d783611709565b9050806001600160a01b0316846001600160a01b031614806129125750836001600160a01b0316612907846109d4565b6001600160a01b0316145b8061294257506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b612955848484612cb8565b61296184848484612e58565b6124755760405162461bcd60e51b8152600401610a4990613b57565b6115c9828260405180602001604052806000815250612f65565b6000806000845160208601878987f195945050505050565b600081516020830184f090506001600160a01b038116612a115760405162461bcd60e51b815260206004820152601960248201527f436f756c64206e6f74206465706c6f7920636f6e7472616374000000000000006044820152606401610a49565b6040516001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a292915050565b6000612a58826020613e20565b83511015612aa05760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610a49565b50016020015190565b606081612ab781601f613e20565b1015612af65760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a49565b612b008284613e20565b84511015612b445760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a49565b606082158015612b635760405191506000825260208201604052612bad565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612b9c578051835260209283019201612b84565b5050858452601f01601f1916604052505b50949350505050565b60008084471015612c095760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610a49565b8251612c575760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610a49565b8383516020850187f590506001600160a01b0381166129425760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610a49565b826001600160a01b0316612ccb82611709565b6001600160a01b031614612d335760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a49565b6001600160a01b038216612d955760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a49565b612da06000826120ce565b6001600160a01b0383166000908152600460205260408120805460019290612dc9908490613e38565b90915550506001600160a01b0382166000908152600460205260408120805460019290612df7908490613e20565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b15612f5a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612e9c9033908990889088906004016139f5565b602060405180830381600087803b158015612eb657600080fd5b505af1925050508015612ee6575060408051601f3d908101601f19168201909252612ee39181019061359d565b60015b612f40573d808015612f14576040519150601f19603f3d011682016040523d82523d6000602084013e612f19565b606091505b508051612f385760405162461bcd60e51b8152600401610a4990613b57565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612942565b506001949350505050565b612f6f8383612f98565b612f7c6000848484612e58565b610b7f5760405162461bcd60e51b8152600401610a4990613b57565b6001600160a01b038216612fee5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a49565b6000818152600360205260409020546001600160a01b0316156130535760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a49565b6001600160a01b038216600090815260046020526040812080546001929061307c908490613e20565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546130e690613e7b565b90600052602060002090601f016020900481019282613108576000855561314e565b82601f1061312157805160ff191683800117855561314e565b8280016001018555821561314e579182015b8281111561314e578251825591602001919060010190613133565b5061315a9291506131ec565b5090565b82805461316a90613e7b565b90600052602060002090601f01602090048101928261318c576000855561314e565b82601f106131a55782800160ff1982351617855561314e565b8280016001018555821561314e579182015b8281111561314e5782358255916020019190600101906131b7565b50805460008255906000526020600020908101906110bf91905b5b8082111561315a57600081556001016131ed565b60008083601f84011261321357600080fd5b50813567ffffffffffffffff81111561322b57600080fd5b6020830191508360208260051b850101111561324657600080fd5b9250929050565b60008083601f84011261325f57600080fd5b50813567ffffffffffffffff81111561327757600080fd5b60208301915083602082850101111561324657600080fd5b600082601f8301126132a057600080fd5b813567ffffffffffffffff808211156132bb576132bb613efd565b604051601f8301601f19908116603f011681019082821181831017156132e3576132e3613efd565b816040528381528660208588010111156132fc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff8116811461332d57600080fd5b919050565b60006020828403121561334457600080fd5b813561334f81613f13565b9392505050565b60006020828403121561336857600080fd5b815161334f81613f13565b6000806040838503121561338657600080fd5b823561339181613f13565b915060208301356133a181613f13565b809150509250929050565b6000806000606084860312156133c157600080fd5b83356133cc81613f13565b925060208401356133dc81613f13565b929592945050506040919091013590565b6000806040838503121561340057600080fd5b823561340b81613f13565b9150602083013580151581146133a157600080fd5b60008060008060008060008060c0898b03121561343c57600080fd5b883561344781613f13565b9750602089013567ffffffffffffffff8082111561346457600080fd5b6134708c838d0161324d565b909950975060408b013591508082111561348957600080fd5b6134958c838d0161324d565b909750955060608b013591506134aa82613f13565b90935060808a0135906134bc82613f13565b90925060a08a013590808211156134d257600080fd5b506134df8b828c0161328f565b9150509295985092959890939650565b6000806040838503121561350257600080fd5b823561350d81613f13565b946020939093013593505050565b60006020828403121561352d57600080fd5b5035919050565b60008060006040848603121561354957600080fd5b83359250602084013567ffffffffffffffff81111561356757600080fd5b6135738682870161324d565b9497909650939450505050565b60006020828403121561359257600080fd5b813561334f81613f28565b6000602082840312156135af57600080fd5b815161334f81613f28565b6000602082840312156135cc57600080fd5b813567ffffffffffffffff8111156135e357600080fd5b6129428482850161328f565b60008060008060006080868803121561360757600080fd5b85359450602086013561361981613f13565b935060408601359250606086013567ffffffffffffffff81111561363c57600080fd5b6136488882890161324d565b969995985093965092949392505050565b600080600080600080600080600060a08a8c03121561367757600080fd5b8935985060208a013567ffffffffffffffff8082111561369657600080fd5b6136a28d838e01613201565b909a50985060408c01359150808211156136bb57600080fd5b6136c78d838e01613201565b909850965060608c01359150808211156136e057600080fd5b6136ec8d838e01613201565b909650945060808c013591508082111561370557600080fd5b506137128c828d01613201565b915080935050809150509295985092959850929598565b6000806040838503121561373c57600080fd5b82359150602083013567ffffffffffffffff81111561375a57600080fd5b6137668582860161328f565b9150509250929050565b60006020828403121561378257600080fd5b61334f8261331c565b600080600080600080600080600080600060c08c8e0312156137ac57600080fd5b6137b58c61331c565b9a5067ffffffffffffffff8060208e013511156137d157600080fd5b6137e18e60208f01358f0161324d565b909b50995060408d01358110156137f757600080fd5b6138078e60408f01358f0161324d565b909950975060608d013581101561381d57600080fd5b61382d8e60608f01358f0161324d565b909750955060808d013581101561384357600080fd5b6138538e60808f01358f0161324d565b909550935060a08d013581101561386957600080fd5b5061387a8d60a08e01358e0161324d565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b858110156138d05781356138b581613f13565b6001600160a01b0316875295820195908201906001016138a2565b509495945050505050565b60008383855260208086019550808560051b8301018460005b8781101561392e57848303601f1901895261390f8288613dda565b61391a858284613971565b9a86019a94505050908301906001016138f4565b5090979650505050505050565b81835260006001600160fb1b0383111561395457600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526139b2816020860160208601613e4f565b601f01601f19169290920160200192915050565b600083516139d8818460208801613e4f565b8351908301906139ec818360208801613e4f565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613a289083018461399a565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613a735783516001600160a01b031683529284019291840191600101613a4e565b50909695505050505050565b602081526000612942602083018486613971565b60208152600061334f602083018461399a565b608081526000613ab9608083018761399a565b8281036020840152613acb818761399a565b60ff959095166040840152505090151560609091015292915050565b608081526000613afa608083018761399a565b6020830195909552506040810192909252606090910152919050565b60208082526021908201527f45524337323154656d706c6174653a204e4f54204d455441444154415f524f4c6040820152604560f81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601c908201527f45524337323154656d706c6174653a206e6f74204e46544f776e657200000000604082015260600190565b6020808252602c908201527f45524337323154656d706c6174653a2043616e6e6f74207472616e736665722060408201526b1d1a1a5cc81d1bdad95b925960a21b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e4147455200604082015260600190565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c811015613d155785840360bf19018352613cf3828f613dda565b613cfe868284613971565b955050506020928301929190910190600101613cd8565b5050508281036040840152613d2b81898b613892565b90508281036060840152613d4081878961393b565b90508281036080840152613d558185876138db565b9c9b505050505050505050505050565b60ff8c16815260e060208201526000613d8260e083018c8e613971565b8281036040840152613d95818b8d613971565b90508281036060840152613daa81898b613971565b90508281036080840152613dbf818789613971565b60a0840195909552505060c001529998505050505050505050565b6000808335601e19843603018112613df157600080fd5b830160208101925035905067ffffffffffffffff811115613e1157600080fd5b80360383131561324657600080fd5b60008219821115613e3357613e33613ed1565b500190565b600082821015613e4a57613e4a613ed1565b500390565b60005b83811015613e6a578181015183820152602001613e52565b838111156124755750506000910152565b600181811c90821680613e8f57607f821691505b60208210811415613eb057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613eca57613eca613ed1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110bf57600080fd5b6001600160e01b0319811681146110bf57600080fdfe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212204c231a3bce15f250b613e00cba4696c7844ed8b7525de2c0e7d50b3f89f9239b64736f6c63430008070033", - "deployedBytecode": "0x60806040526004361061025d5760003560e01c806355f804b311610143578063a22cb465116100bb578063d2786ba411610077578063d2786ba41461082d578063d8053ad314610852578063e086e5ec14610871578063e38d7cad14610879578063e985e9c514610899578063fe1ec880146108e257005b8063a22cb46514610780578063ac18de43146107a0578063b0c41ead146107c0578063c55f8126146107e0578063c87b56dd146107f3578063ccd7d4761461081357005b806370a082311161010a57806370a082311461069157806370c166d7146106bf57806382cf129d146106df57806390184b02146106f457806395d89b411461072d57806396fb3eaf1461074257005b806355f804b3146105ef5780635d1ca6311461060f5780635d5dea24146106315780636352211e1461065157806367530a611461067157005b8063273e06b3116101d6578063466bca021161019d578063466bca0214610538578063467c97f51461055a5780634a63740a1461057a5780634b2ee5e91461059a5780634f189cb2146105ba57806354f6127f146105cf57005b8063273e06b3146104a05780632d06177a146104c0578063392e53cd146104e057806342842e0e146104f8578063431053ac1461051857005b80630e57c7e8116102255780630e57c7e81461032357806310c558bf14610343578063160a792514610363578063162094c41461044057806319c186e51461046057806323b872dd1461048057005b806301ffc9a71461025f57806306fdde0314610294578063081812fc146102b6578063095ea7b3146102ee5780630e05662e1461030e575b005b34801561026b57600080fd5b5061027f61027a366004613580565b610902565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610942565b60405161028b9190613a93565b3480156102c257600080fd5b506102d66102d136600461351b565b6109d4565b6040516001600160a01b03909116815260200161028b565b3480156102fa57600080fd5b5061025d6103093660046134ef565b610a6e565b34801561031a57600080fd5b506102a9610b84565b34801561032f57600080fd5b5061025d61033e366004613534565b610c12565b34801561034f57600080fd5b5061025d61035e366004613332565b610c8c565b34801561036f57600080fd5b5061040561037e366004613332565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600860209081526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b60405161028b919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b34801561044c57600080fd5b5061025d61045b366004613729565b610d5f565b34801561046c57600080fd5b5061025d61047b366004613332565b610dee565b34801561048c57600080fd5b5061025d61049b3660046133ac565b610eb7565b3480156104ac57600080fd5b5061025d6104bb366004613332565b610f89565b3480156104cc57600080fd5b5061025d6104db366004613332565b6110c2565b3480156104ec57600080fd5b50600e5460ff1661027f565b34801561050457600080fd5b5061025d6105133660046133ac565b611105565b34801561052457600080fd5b5061025d610533366004613332565b6111ab565b34801561054457600080fd5b5061054d6112e0565b60405161028b9190613a32565b34801561056657600080fd5b5061025d610575366004613770565b611341565b34801561058657600080fd5b5061025d610595366004613332565b6113d1565b3480156105a657600080fd5b506013546102d6906001600160a01b031681565b3480156105c657600080fd5b5061025d611496565b3480156105db57600080fd5b506102a96105ea36600461351b565b6114da565b3480156105fb57600080fd5b5061025d61060a3660046135ba565b61157c565b34801561061b57600080fd5b5060015b60405160ff909116815260200161028b565b34801561063d57600080fd5b5061025d61064c36600461378b565b6115cd565b34801561065d57600080fd5b506102d661066c36600461351b565b611709565b34801561067d57600080fd5b5061025d61068c366004613534565b611780565b34801561069d57600080fd5b506106b16106ac366004613332565b6117f5565b60405190815260200161028b565b3480156106cb57600080fd5b5061027f6106da366004613420565b61187c565b3480156106eb57600080fd5b506102a9611999565b34801561070057600080fd5b5061027f61070f366004613332565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561073957600080fd5b506102a96119a6565b34801561074e57600080fd5b5061027f61075d366004613332565b6001600160a01b0316600090815260086020526040902054610100900460ff1690565b34801561078c57600080fd5b5061025d61079b3660046133ed565b6119b5565b3480156107ac57600080fd5b5061025d6107bb366004613332565b611a73565b3480156107cc57600080fd5b506102d66107db36600461351b565b611ab6565b61025d6107ee3660046135ef565b611ae0565b3480156107ff57600080fd5b506102a961080e36600461351b565b611b28565b34801561081f57600080fd5b5060115461061f9060ff1681565b34801561083957600080fd5b50610842611c86565b60405161028b9493929190613aa6565b34801561085e57600080fd5b50600e5461027f90610100900460ff1681565b61025d611dd6565b34801561088557600080fd5b506102d6610894366004613659565b611e18565b3480156108a557600080fd5b5061027f6108b4366004613373565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156108ee57600080fd5b5061025d6108fd366004613332565b611f9e565b60006301ffc9a760e01b6001600160e01b03198316148061093c57506001600160e01b031982166000908152600a602052604090205460ff165b92915050565b6060600c805461095190613e7b565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90613e7b565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610a525760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610a7982611709565b9050806001600160a01b0316836001600160a01b03161415610ae75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a49565b336001600160a01b0382161480610b035750610b0381336108b4565b610b755760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a49565b610b7f83836120ce565b505050565b60108054610b9190613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90613e7b565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081565b3360009081526014602052604090205460ff161515600114610c815760405162461bcd60e51b815260206004820152602260248201527f45524337323154656d706c6174653a204e4f5420455243323020436f6e74726160448201526118dd60f21b6064820152608401610a49565b610b7f83838361213c565b3360009081526008602052604090205460ff161515600114610cc05760405162461bcd60e51b8152600401610a4990613c7d565b6001600160a01b038116600081815260086020526040808220805462ff0000191662010000178155600980546001810182559352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa490610d539042904390918252602082015260400190565b60405180910390a35050565b610d696001611709565b6001600160a01b0316336001600160a01b031614610d995760405162461bcd60e51b8152600401610a4990613ba9565b610da38282612195565b336001600160a01b03167f6de6cd3982065cbd31e789e3109106f4d76d1c8a46e85262045cf947fb3fd4ed82844243604051610de29493929190613ae7565b60405180910390a25050565b3360009081526008602052604090205460ff161515600114610e225760405162461bcd60e51b8152600401610a4990613c7d565b6001600160a01b038116600081815260086020526040808220805463ff00000019166301000000178155600980546001810182559352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee90610d539042904390918252602082015260400190565b80600114610ed75760405162461bcd60e51b8152600401610a4990613be0565b610f41610f3c6012805480602002602001604051908101604052809291908181526020018280548015610f3357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f15575b50505050505190565b61222f565b610f496122c0565b610f54838383612371565b610f5d826123b2565b506001600160a01b03166000908152600860205260409020805463ffffff001916630101010017905550565b3360009081526008602052604090205460ff16151560011480610fda5750336001600160a01b038216148015610fda5750336000908152600860205260409020546301000000900460ff1615156001145b15611042576001600160a01b03811660008181526008602052604090819020805463ff000000191681559051909133917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf390610d539042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610a49565b50565b6110cc6001611709565b6001600160a01b0316336001600160a01b0316146110fc5760405162461bcd60e51b8152600401610a4990613ba9565b6110bf816123b2565b806001146111255760405162461bcd60e51b8152600401610a4990613be0565b611188610f3c6012805480602002602001604051908101604052809291908181526020018280548015610f33576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f155750505050505190565b6111906122c0565b610f5483838360405180602001604052806000815250612443565b3360009081526008602052604090205460ff161515600114806111fb5750336001600160a01b0382161480156111fb57503360009081526008602052604090205462010000900460ff1615156001145b15611262576001600160a01b03811660008181526008602052604090819020805462ff0000191681559051909133917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b90610d539042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610a49565b606060128054806020026020016040519081016040528092919081815260200182805480156109ca57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131a575050505050905090565b3360009081526008602052604090205462010000900460ff16151560011461137b5760405162461bcd60e51b8152600401610a4990613b16565b6011805460ff191660ff831690811790915560408051918252426020830152439082015233907fa8336411cc72db0e5bdc4dff989eeb35879bafaceffb59b54b37645c3395adb99060600160405180910390a250565b3360009081526008602052604090205460ff1615156001146114055760405162461bcd60e51b8152600401610a4990613c7d565b6001600160a01b038116600081815260086020526040808220805461ff001916610100178155600980546001810182559352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f90610d539042904390918252602082015260400190565b6114a06001611709565b6001600160a01b0316336001600160a01b0316146114d05760405162461bcd60e51b8152600401610a4990613ba9565b6114d86122c0565b565b6000818152600b602052604090208054606091906114f790613e7b565b80601f016020809104026020016040519081016040528092919081815260200182805461152390613e7b565b80156115705780601f1061154557610100808354040283529160200191611570565b820191906000526020600020905b81548152906001019060200180831161155357829003601f168201915b50505050509050919050565b6115866001611709565b6001600160a01b0316336001600160a01b0316146115b65760405162461bcd60e51b8152600401610a4990613ba9565b80516115c99060029060208401906130da565b5050565b3360009081526008602052604090205462010000900460ff1615156001146116075760405162461bcd60e51b8152600401610a4990613b16565b6011805460ff191660ff8d16179055611622600f8b8b61315e565b5061162f6010898961315e565b50600e54610100900460ff166116a857336001600160a01b03167fa6105ba66a6e1cdef460b79cd6a2d14f58d1e224f5bb876fafc51535c34ab6848c8c8c8a8a8a8a8a8a424360405161168c9b9a99989796959493929190613d65565b60405180910390a2600e805461ff0019166101001790556116fc565b60115460405133917f4248722dac0ab49fef08643fbc510e0343175ae223ca5cc5420e118e46da7198916116f39160ff16908e908e908c908c908c908c908c908c9042904390613d65565b60405180910390a25b5050505050505050505050565b6000818152600360205260408120546001600160a01b03168061093c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a49565b336000908152600860205260409020546301000000900460ff161515600114610c815760405162461bcd60e51b815260206004820152602160248201527f45524337323154656d706c6174653a204e4f542053544f5245205550444154456044820152602960f91b6064820152608401610a49565b60006001600160a01b0382166118605760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a49565b506001600160a01b031660009081526004602052604090205490565b600e5460009060ff16156118ed5760405162461bcd60e51b815260206004820152603260248201527f45524337323154656d706c6174653a20746f6b656e20696e7374616e636520616044820152711b1c9958591e481a5b9a5d1a585b1a5e995960721b6064820152608401610a49565b60006119678a8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152508b925089915061247b9050565b905080801561197e57506001600160a01b03841615155b1561198c5761198c84611405565b9998505050505050505050565b600f8054610b9190613e7b565b6060600d805461095190613e7b565b6001600160a01b038216331415611a0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a49565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610d53565b611a7d6001611709565b6001600160a01b0316336001600160a01b031614611aad5760405162461bcd60e51b8152600401610a4990613ba9565b6110bf816125bb565b60098181548110611ac657600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff161515600114611b145760405162461bcd60e51b8152600401610a4990613c7d565b611b21858585858561261b565b5050505050565b6000818152600360205260409020546060906001600160a01b0316611ba75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a49565b60008281526007602052604081208054611bc090613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bec90613e7b565b8015611c395780601f10611c0e57610100808354040283529160200191611c39565b820191906000526020600020905b815481529060010190602001808311611c1c57829003601f168201915b505050505090506000611c4a612844565b825190915015611c7f578082604051602001611c679291906139c6565b60405160208183030381529060405292505050919050565b5092915050565b606080600080600f6010601160009054906101000a900460ff16600e60019054906101000a900460ff16838054611cbc90613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce890613e7b565b8015611d355780601f10611d0a57610100808354040283529160200191611d35565b820191906000526020600020905b815481529060010190602001808311611d1857829003601f168201915b50505050509350828054611d4890613e7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7490613e7b565b8015611dc15780601f10611d9657610100808354040283529160200191611dc1565b820191906000526020600020905b815481529060010190602001808311611da457829003601f168201915b50505050509250935093509350935090919293565b611de06001611709565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156110bf573d6000803e3d6000fd5b3360009081526008602052604081205460ff610100909104161515600114611e915760405162461bcd60e51b815260206004820152602660248201527f45524337323154656d706c6174653a204e4f542045524332304445504c4f5945604482015265525f524f4c4560d01b6064820152608401610a49565b601154604051630557fcfb60e41b815260009161010090046001600160a01b03169063557fcfb090611ed7908e908e908e908e908e908e908e908e908e90600401613cb4565b602060405180830381600087803b158015611ef157600080fd5b505af1158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190613356565b6001600160a01b0381166000818152601460205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b03191690911790559150509998505050505050505050565b3360009081526008602052604090205460ff16151560011480611fee5750336001600160a01b038216148015611fee57503360009081526008602052604090205460ff6101009091041615156001145b15612054576001600160a01b03811660008181526008602052604090819020805461ff00191681559051909133917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899790610d539042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610a49565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061210382611709565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000838152600b6020526040902061215590838361315e565b50827fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28383604051612188929190613a7f565b60405180910390a2505050565b6000828152600360205260409020546001600160a01b03166122105760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a49565b60008281526007602090815260409091208251610b7f928401906130da565b60005b818110156115c9576012818154811061224d5761224d613ee7565b6000918252602082200154604080516382c03da560e01b815290516001600160a01b03909216926382c03da59260048084019382900301818387803b15801561229557600080fd5b505af11580156122a9573d6000803e3d6000fd5b5050505080806122b890613eb6565b915050612232565b60005b60095481101561232857600060086000600984815481106122e6576122e6613ee7565b60009182526020808320909101546001600160a01b031683528201929092526040019020805463ffffffff19169055508061232081613eb6565b9150506122c3565b50612335600960006131d2565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b61237b3382612853565b6123975760405162461bcd60e51b8152600401610a4990613c2c565b610b7f83838360405180602001604052806000815250612443565b6001600160a01b038116600081815260086020526040808220805460ff191660019081178255600980549182018155909352600080516020613f3f83398151915290920180546001600160a01b0319168417905551909133917faf8fc8b6726138c96881c895390a08e9d91a94c288f06281e7f9821c49c7155b90610d539042904390918252602082015260400190565b61244d3383612853565b6124695760405162461bcd60e51b8152600401610a4990613c2c565b6124758484848461294a565b50505050565b60006001600160a01b0386166124ea5760405162461bcd60e51b815260206004820152602e60248201527f45524337323154656d706c6174653a3a20496e76616c6964206d696e7465722c60448201526d20207a65726f206164647265737360901b6064820152608401610a49565b84516124fd90600c9060208801906130da565b50835161251190600d9060208701906130da565b5060118054610100600160a81b0319166101006001600160a01b03861602179055604080516020810191829052600090819052612550916002916130da565b50600e805461ffff1916600190811790915561256d90879061297d565b612576866123b2565b6001600160a01b0386166000908152600860205260409020805463ffffff00191663010101001781556125aa600184612195565b5050600e5460ff1695945050505050565b6001600160a01b03811660008181526008602052604090819020805460ff191681559051909133917fb572db0e6da4924b771ed1712b980d48b5992b9a1c27aede55fbb3318c48996a90610d539042904390918252602082015260400190565b82846001600160a01b0316867f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b88585604051612658929190613a7f565b60405180910390a460006109c45a6126709190613e38565b9050856126c0576126ba858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612997915050565b5061283c565b6003861415612709576126ba8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129af92505050565b60028614156127fd57600061276084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275b925060209150879050613e38565b612a4b565b905060006127af85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506127aa91506020905088613e38565b612aa9565b905060006127be878484612bb6565b6040519091506001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a250505061283c565b60405162461bcd60e51b815260206004820152601460248201527357726f6e67206f7065726174696f6e207479706560601b6044820152606401610a49565b505050505050565b60606002805461095190613e7b565b6000818152600360205260408120546001600160a01b03166128cc5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a49565b60006128d783611709565b9050806001600160a01b0316846001600160a01b031614806129125750836001600160a01b0316612907846109d4565b6001600160a01b0316145b8061294257506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b612955848484612cb8565b61296184848484612e58565b6124755760405162461bcd60e51b8152600401610a4990613b57565b6115c9828260405180602001604052806000815250612f65565b6000806000845160208601878987f195945050505050565b600081516020830184f090506001600160a01b038116612a115760405162461bcd60e51b815260206004820152601960248201527f436f756c64206e6f74206465706c6f7920636f6e7472616374000000000000006044820152606401610a49565b6040516001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a292915050565b6000612a58826020613e20565b83511015612aa05760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610a49565b50016020015190565b606081612ab781601f613e20565b1015612af65760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a49565b612b008284613e20565b84511015612b445760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a49565b606082158015612b635760405191506000825260208201604052612bad565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612b9c578051835260209283019201612b84565b5050858452601f01601f1916604052505b50949350505050565b60008084471015612c095760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610a49565b8251612c575760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610a49565b8383516020850187f590506001600160a01b0381166129425760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610a49565b826001600160a01b0316612ccb82611709565b6001600160a01b031614612d335760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a49565b6001600160a01b038216612d955760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a49565b612da06000826120ce565b6001600160a01b0383166000908152600460205260408120805460019290612dc9908490613e38565b90915550506001600160a01b0382166000908152600460205260408120805460019290612df7908490613e20565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b15612f5a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612e9c9033908990889088906004016139f5565b602060405180830381600087803b158015612eb657600080fd5b505af1925050508015612ee6575060408051601f3d908101601f19168201909252612ee39181019061359d565b60015b612f40573d808015612f14576040519150601f19603f3d011682016040523d82523d6000602084013e612f19565b606091505b508051612f385760405162461bcd60e51b8152600401610a4990613b57565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612942565b506001949350505050565b612f6f8383612f98565b612f7c6000848484612e58565b610b7f5760405162461bcd60e51b8152600401610a4990613b57565b6001600160a01b038216612fee5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a49565b6000818152600360205260409020546001600160a01b0316156130535760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a49565b6001600160a01b038216600090815260046020526040812080546001929061307c908490613e20565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546130e690613e7b565b90600052602060002090601f016020900481019282613108576000855561314e565b82601f1061312157805160ff191683800117855561314e565b8280016001018555821561314e579182015b8281111561314e578251825591602001919060010190613133565b5061315a9291506131ec565b5090565b82805461316a90613e7b565b90600052602060002090601f01602090048101928261318c576000855561314e565b82601f106131a55782800160ff1982351617855561314e565b8280016001018555821561314e579182015b8281111561314e5782358255916020019190600101906131b7565b50805460008255906000526020600020908101906110bf91905b5b8082111561315a57600081556001016131ed565b60008083601f84011261321357600080fd5b50813567ffffffffffffffff81111561322b57600080fd5b6020830191508360208260051b850101111561324657600080fd5b9250929050565b60008083601f84011261325f57600080fd5b50813567ffffffffffffffff81111561327757600080fd5b60208301915083602082850101111561324657600080fd5b600082601f8301126132a057600080fd5b813567ffffffffffffffff808211156132bb576132bb613efd565b604051601f8301601f19908116603f011681019082821181831017156132e3576132e3613efd565b816040528381528660208588010111156132fc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff8116811461332d57600080fd5b919050565b60006020828403121561334457600080fd5b813561334f81613f13565b9392505050565b60006020828403121561336857600080fd5b815161334f81613f13565b6000806040838503121561338657600080fd5b823561339181613f13565b915060208301356133a181613f13565b809150509250929050565b6000806000606084860312156133c157600080fd5b83356133cc81613f13565b925060208401356133dc81613f13565b929592945050506040919091013590565b6000806040838503121561340057600080fd5b823561340b81613f13565b9150602083013580151581146133a157600080fd5b60008060008060008060008060c0898b03121561343c57600080fd5b883561344781613f13565b9750602089013567ffffffffffffffff8082111561346457600080fd5b6134708c838d0161324d565b909950975060408b013591508082111561348957600080fd5b6134958c838d0161324d565b909750955060608b013591506134aa82613f13565b90935060808a0135906134bc82613f13565b90925060a08a013590808211156134d257600080fd5b506134df8b828c0161328f565b9150509295985092959890939650565b6000806040838503121561350257600080fd5b823561350d81613f13565b946020939093013593505050565b60006020828403121561352d57600080fd5b5035919050565b60008060006040848603121561354957600080fd5b83359250602084013567ffffffffffffffff81111561356757600080fd5b6135738682870161324d565b9497909650939450505050565b60006020828403121561359257600080fd5b813561334f81613f28565b6000602082840312156135af57600080fd5b815161334f81613f28565b6000602082840312156135cc57600080fd5b813567ffffffffffffffff8111156135e357600080fd5b6129428482850161328f565b60008060008060006080868803121561360757600080fd5b85359450602086013561361981613f13565b935060408601359250606086013567ffffffffffffffff81111561363c57600080fd5b6136488882890161324d565b969995985093965092949392505050565b600080600080600080600080600060a08a8c03121561367757600080fd5b8935985060208a013567ffffffffffffffff8082111561369657600080fd5b6136a28d838e01613201565b909a50985060408c01359150808211156136bb57600080fd5b6136c78d838e01613201565b909850965060608c01359150808211156136e057600080fd5b6136ec8d838e01613201565b909650945060808c013591508082111561370557600080fd5b506137128c828d01613201565b915080935050809150509295985092959850929598565b6000806040838503121561373c57600080fd5b82359150602083013567ffffffffffffffff81111561375a57600080fd5b6137668582860161328f565b9150509250929050565b60006020828403121561378257600080fd5b61334f8261331c565b600080600080600080600080600080600060c08c8e0312156137ac57600080fd5b6137b58c61331c565b9a5067ffffffffffffffff8060208e013511156137d157600080fd5b6137e18e60208f01358f0161324d565b909b50995060408d01358110156137f757600080fd5b6138078e60408f01358f0161324d565b909950975060608d013581101561381d57600080fd5b61382d8e60608f01358f0161324d565b909750955060808d013581101561384357600080fd5b6138538e60808f01358f0161324d565b909550935060a08d013581101561386957600080fd5b5061387a8d60a08e01358e0161324d565b81935080925050509295989b509295989b9093969950565b8183526000602080850194508260005b858110156138d05781356138b581613f13565b6001600160a01b0316875295820195908201906001016138a2565b509495945050505050565b60008383855260208086019550808560051b8301018460005b8781101561392e57848303601f1901895261390f8288613dda565b61391a858284613971565b9a86019a94505050908301906001016138f4565b5090979650505050505050565b81835260006001600160fb1b0383111561395457600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526139b2816020860160208601613e4f565b601f01601f19169290920160200192915050565b600083516139d8818460208801613e4f565b8351908301906139ec818360208801613e4f565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613a289083018461399a565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613a735783516001600160a01b031683529284019291840191600101613a4e565b50909695505050505050565b602081526000612942602083018486613971565b60208152600061334f602083018461399a565b608081526000613ab9608083018761399a565b8281036020840152613acb818761399a565b60ff959095166040840152505090151560609091015292915050565b608081526000613afa608083018761399a565b6020830195909552506040810192909252606090910152919050565b60208082526021908201527f45524337323154656d706c6174653a204e4f54204d455441444154415f524f4c6040820152604560f81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601c908201527f45524337323154656d706c6174653a206e6f74204e46544f776e657200000000604082015260600190565b6020808252602c908201527f45524337323154656d706c6174653a2043616e6e6f74207472616e736665722060408201526b1d1a1a5cc81d1bdad95b925960a21b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e4147455200604082015260600190565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c811015613d155785840360bf19018352613cf3828f613dda565b613cfe868284613971565b955050506020928301929190910190600101613cd8565b5050508281036040840152613d2b81898b613892565b90508281036060840152613d4081878961393b565b90508281036080840152613d558185876138db565b9c9b505050505050505050505050565b60ff8c16815260e060208201526000613d8260e083018c8e613971565b8281036040840152613d95818b8d613971565b90508281036060840152613daa81898b613971565b90508281036080840152613dbf818789613971565b60a0840195909552505060c001529998505050505050505050565b6000808335601e19843603018112613df157600080fd5b830160208101925035905067ffffffffffffffff811115613e1157600080fd5b80360383131561324657600080fd5b60008219821115613e3357613e33613ed1565b500190565b600082821015613e4a57613e4a613ed1565b500390565b60005b83811015613e6a578181015183820152602001613e52565b838111156124755750506000910152565b600181811c90821680613e8f57607f821691505b60208210811415613eb057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613eca57613eca613ed1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110bf57600080fd5b6001600160e01b0319811681146110bf57600080fdfe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212204c231a3bce15f250b613e00cba4696c7844ed8b7525de2c0e7d50b3f89f9239b64736f6c63430008070033", + "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252600881526754656d706c61746560c01b60208083019182528351808501909452600e84526d15195b5c1b185d1954de5b589bdb60921b908401528151919291620000689160009162000136565b5080516200007e90600190602084019062000136565b50620000959150632260147f60e11b9050620000b2565b620000a7632bd57b7360e01b620000b2565b6001600c5562000219565b6001600160e01b03198082161415620001115760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600a60205260409020805460ff19166001179055565b8280546200014490620001dc565b90600052602060002090601f016020900481019282620001685760008555620001b3565b82601f106200018357805160ff1916838001178555620001b3565b82800160010185558215620001b3579182015b82811115620001b357825182559160200191906001019062000196565b50620001c1929150620001c5565b5090565b5b80821115620001c15760008155600101620001c6565b600181811c90821680620001f157607f821691505b602082108114156200021357634e487b7160e01b600052602260045260246000fd5b50919050565b61463980620002296000396000f3fe6080604052600436106102685760003560e01c806354f6127f11610143578063a22cb465116100bb578063d2786ba411610077578063d2786ba414610858578063d8053ad31461087d578063e086e5ec1461089c578063e38d7cad146108a4578063e985e9c5146108c4578063fe1ec8801461090d57005b8063a22cb465146107ab578063ac18de43146107cb578063b0c41ead146107eb578063c55f81261461080b578063c87b56dd1461081e578063ccd7d4761461083e57005b806370a082311161010a57806370a08231146106bc57806370c166d7146106ea57806382cf129d1461070a57806390184b021461071f57806395d89b411461075857806396fb3eaf1461076d57005b806354f6127f1461061a57806355f804b31461063a5780635d1ca6311461065a5780636352211e1461067c57806367530a611461069c57005b80631aa3adf9116101e1578063431053ac1161019d578063431053ac14610563578063466bca0214610583578063467c97f5146105a55780634a63740a146105c55780634b2ee5e9146105e55780634f189cb21461060557005b80631aa3adf9146104ab57806323b872dd146104cb578063273e06b3146104eb5780632d06177a1461050b578063392e53cd1461052b57806342842e0e1461054357005b80630e57c7e8116102305780630e57c7e81461032e57806310c558bf1461034e578063160a79251461036e578063162094c41461044b57806319a18a851461046b57806319c186e51461048b57005b806301ffc9a71461026a57806306fdde031461029f578063081812fc146102c1578063095ea7b3146102f95780630e05662e14610319575b005b34801561027657600080fd5b5061028a6102853660046136c0565b61092d565b60405190151581526020015b60405180910390f35b3480156102ab57600080fd5b506102b461096d565b604051610296919061373c565b3480156102cd57600080fd5b506102e16102dc36600461374f565b6109ff565b6040516001600160a01b039091168152602001610296565b34801561030557600080fd5b5061026861031436600461377d565b610a99565b34801561032557600080fd5b506102b4610baf565b34801561033a57600080fd5b506102686103493660046137f1565b610c3d565b34801561035a57600080fd5b5061026861036936600461383c565b610cb2565b34801561037a57600080fd5b5061041061038936600461383c565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600860209081526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b604051610296919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b34801561045757600080fd5b5061026861046636600461390e565b610d85565b34801561047757600080fd5b50610268610486366004613954565b610e13565b34801561049757600080fd5b506102686104a636600461383c565b610f47565b3480156104b757600080fd5b506102686104c6366004613aa0565b611010565b3480156104d757600080fd5b506102686104e6366004613ba7565b611065565b3480156104f757600080fd5b5061026861050636600461383c565b611137565b34801561051757600080fd5b5061026861052636600461383c565b61126d565b34801561053757600080fd5b50600f5460ff1661028a565b34801561054f57600080fd5b5061026861055e366004613ba7565b6112b0565b34801561056f57600080fd5b5061026861057e36600461383c565b611356565b34801561058f57600080fd5b5061059861148b565b6040516102969190613be8565b3480156105b157600080fd5b506102686105c0366004613c35565b6114ec565b3480156105d157600080fd5b506102686105e036600461383c565b611577565b3480156105f157600080fd5b506014546102e1906001600160a01b031681565b34801561061157600080fd5b5061026861163c565b34801561062657600080fd5b506102b461063536600461374f565b611680565b34801561064657600080fd5b50610268610655366004613c50565b611722565b34801561066657600080fd5b5060015b60405160ff9091168152602001610296565b34801561068857600080fd5b506102e161069736600461374f565b611773565b3480156106a857600080fd5b506102686106b73660046137f1565b6117ea565b3480156106c857600080fd5b506106dc6106d736600461383c565b61185a565b604051908152602001610296565b3480156106f657600080fd5b5061028a610705366004613c84565b6118e1565b34801561071657600080fd5b506102b46119fe565b34801561072b57600080fd5b5061028a61073a36600461383c565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561076457600080fd5b506102b4611a0b565b34801561077957600080fd5b5061028a61078836600461383c565b6001600160a01b0316600090815260086020526040902054610100900460ff1690565b3480156107b757600080fd5b506102686107c6366004613d52565b611a1a565b3480156107d757600080fd5b506102686107e636600461383c565b611ad8565b3480156107f757600080fd5b506102e161080636600461374f565b611b1b565b610268610819366004613d90565b611b45565b34801561082a57600080fd5b506102b461083936600461374f565b611b8d565b34801561084a57600080fd5b5060125461066a9060ff1681565b34801561086457600080fd5b5061086d611ceb565b6040516102969493929190613df9565b34801561088957600080fd5b50600f5461028a90610100900460ff1681565b610268611e3b565b3480156108b057600080fd5b506102e16108bf366004613e7e565b611e7d565b3480156108d057600080fd5b5061028a6108df366004613f4d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561091957600080fd5b5061026861092836600461383c565b61204d565b60006301ffc9a760e01b6001600160e01b03198316148061096757506001600160e01b031982166000908152600a602052604090205460ff165b92915050565b6060600d805461097c90613f7b565b80601f01602080910402602001604051908101604052809291908181526020018280546109a890613f7b565b80156109f55780601f106109ca576101008083540402835291602001916109f5565b820191906000526020600020905b8154815290600101906020018083116109d857829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610a7d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610aa482611773565b9050806001600160a01b0316836001600160a01b03161415610b125760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a74565b336001600160a01b0382161480610b2e5750610b2e81336108df565b610ba05760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a74565b610baa838361217d565b505050565b60118054610bbc90613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890613f7b565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b505050505081565b3360009081526015602052604090205460ff16610ca75760405162461bcd60e51b815260206004820152602260248201527f45524337323154656d706c6174653a204e4f5420455243323020436f6e74726160448201526118dd60f21b6064820152608401610a74565b610baa8383836121eb565b3360009081526008602052604090205460ff161515600114610ce65760405162461bcd60e51b8152600401610a7490613fb6565b6001600160a01b038116600081815260086020526040808220805462ff00001916620100001781556009805460018101825593526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa490610d799042904390918252602082015260400190565b60405180910390a35050565b610d8e82611773565b6001600160a01b0316336001600160a01b031614610dbe5760405162461bcd60e51b8152600401610a7490613fed565b610dc88282612244565b336001600160a01b03167f6de6cd3982065cbd31e789e3109106f4d76d1c8a46e85262045cf947fb3fd4ed82844243604051610e079493929190614024565b60405180910390a25050565b3360009081526008602052604090205462010000900460ff16610e485760405162461bcd60e51b8152600401610a7490614053565b610ef5610e586020830183613c35565b610e656020840184614094565b610e726040860186614094565b610e7f6060880188614094565b610e8c60808a018a614094565b60a08b0135610e9f6101008d018d6140da565b808060200260200160405190810160405280939291908181526020016000905b82821015610eeb57610edc60808302860136819003810190614123565b81526020019060010190610ebf565b50505050506122de565b610f4460c0820135610f0a60e0840184614094565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8592505050565b50565b3360009081526008602052604090205460ff161515600114610f7b5760405162461bcd60e51b8152600401610a7490613fb6565b6001600160a01b038116600081815260086020526040808220805463ff000000191663010000001781556009805460018101825593526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee90610d799042904390918252602082015260400190565b3360009081526008602052604090205462010000900460ff166110455760405162461bcd60e51b8152600401610a7490614053565b6110588b8b8b8b8b8b8b8b8b8b8b6122de565b5050505050505050505050565b806001146110855760405162461bcd60e51b8152600401610a749061413f565b6110ef6110ea60138054806020026020016040519081016040528092919081815260200182805480156110e157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c3575b50505050505190565b6126e7565b6110f7612778565b611102838383612829565b61110b8261286a565b506001600160a01b03166000908152600860205260409020805463ffffff001916630101010017905550565b3360009081526008602052604090205460ff161515600114806111885750336001600160a01b0382161480156111885750336000908152600860205260409020546301000000900460ff1615156001145b156111f0576001600160a01b03811660008181526008602052604090819020805463ff000000191681559051909133917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf390610d799042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610a74565b6112776001611773565b6001600160a01b0316336001600160a01b0316146112a75760405162461bcd60e51b8152600401610a7490613fed565b610f448161286a565b806001146112d05760405162461bcd60e51b8152600401610a749061413f565b6113336110ea60138054806020026020016040519081016040528092919081815260200182805480156110e1576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c35750505050505190565b61133b612778565b611102838383604051806020016040528060008152506128fb565b3360009081526008602052604090205460ff161515600114806113a65750336001600160a01b0382161480156113a657503360009081526008602052604090205462010000900460ff1615156001145b1561140d576001600160a01b03811660008181526008602052604090819020805462ff0000191681559051909133917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b90610d799042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610a74565b606060138054806020026020016040519081016040528092919081815260200182805480156109f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114c5575050505050905090565b3360009081526008602052604090205462010000900460ff166115215760405162461bcd60e51b8152600401610a7490614053565b6012805460ff191660ff831690811790915560408051918252426020830152439082015233907fa8336411cc72db0e5bdc4dff989eeb35879bafaceffb59b54b37645c3395adb99060600160405180910390a250565b3360009081526008602052604090205460ff1615156001146115ab5760405162461bcd60e51b8152600401610a7490613fb6565b6001600160a01b038116600081815260086020526040808220805461ff0019166101001781556009805460018101825593526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f90610d799042904390918252602082015260400190565b6116466001611773565b6001600160a01b0316336001600160a01b0316146116765760405162461bcd60e51b8152600401610a7490613fed565b61167e612778565b565b6000818152600b6020526040902080546060919061169d90613f7b565b80601f01602080910402602001604051908101604052809291908181526020018280546116c990613f7b565b80156117165780601f106116eb57610100808354040283529160200191611716565b820191906000526020600020905b8154815290600101906020018083116116f957829003601f168201915b50505050509050919050565b61172c6001611773565b6001600160a01b0316336001600160a01b03161461175c5760405162461bcd60e51b8152600401610a7490613fed565b805161176f906002906020840190613583565b5050565b6000818152600360205260408120546001600160a01b0316806109675760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a74565b336000908152600860205260409020546301000000900460ff16610ca75760405162461bcd60e51b815260206004820152602160248201527f45524337323154656d706c6174653a204e4f542053544f5245205550444154456044820152602960f91b6064820152608401610a74565b60006001600160a01b0382166118c55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a74565b506001600160a01b031660009081526004602052604090205490565b600f5460009060ff16156119525760405162461bcd60e51b815260206004820152603260248201527f45524337323154656d706c6174653a20746f6b656e20696e7374616e636520616044820152711b1c9958591e481a5b9a5d1a585b1a5e995960721b6064820152608401610a74565b60006119cc8a8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152508b92508991506129339050565b90508080156119e357506001600160a01b03841615155b156119f1576119f1846115ab565b9998505050505050505050565b60108054610bbc90613f7b565b6060600e805461097c90613f7b565b6001600160a01b038216331415611a735760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a74565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610d79565b611ae26001611773565b6001600160a01b0316336001600160a01b031614611b125760405162461bcd60e51b8152600401610a7490613fed565b610f4481612a73565b60098181548110611b2b57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff161515600114611b795760405162461bcd60e51b8152600401610a7490613fb6565b611b868585858585612ad3565b5050505050565b6000818152600360205260409020546060906001600160a01b0316611c0c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a74565b60008281526007602052604081208054611c2590613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5190613f7b565b8015611c9e5780601f10611c7357610100808354040283529160200191611c9e565b820191906000526020600020905b815481529060010190602001808311611c8157829003601f168201915b505050505090506000611caf612cfc565b825190915015611ce4578082604051602001611ccc92919061418b565b60405160208183030381529060405292505050919050565b5092915050565b60608060008060106011601260009054906101000a900460ff16600f60019054906101000a900460ff16838054611d2190613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d90613f7b565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b50505050509350828054611dad90613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611dd990613f7b565b8015611e265780601f10611dfb57610100808354040283529160200191611e26565b820191906000526020600020905b815481529060010190602001808311611e0957829003601f168201915b50505050509250935093509350935090919293565b611e456001611773565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610f44573d6000803e3d6000fd5b60006002600c541415611ed25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a74565b6002600c5533600090815260086020526040902054610100900460ff16611f4a5760405162461bcd60e51b815260206004820152602660248201527f45524337323154656d706c6174653a204e4f542045524332304445504c4f5945604482015265525f524f4c4560d01b6064820152608401610a74565b601254604051630557fcfb60e41b815260009161010090046001600160a01b03169063557fcfb090611f90908e908e908e908e908e908e908e908e908e90600401614304565b6020604051808303816000875af1158015611faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd391906143b5565b6001600160a01b0381166000818152601560205260408120805460ff191660019081179091556013805491820181559091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b03191690911790559150506001600c559998505050505050505050565b3360009081526008602052604090205460ff1615156001148061209d5750336001600160a01b03821614801561209d57503360009081526008602052604090205460ff6101009091041615156001145b15612103576001600160a01b03811660008181526008602052604090819020805461ff00191681559051909133917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899790610d799042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610a74565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906121b282611773565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000838152600b60205260409020612204908383613607565b50827fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b283836040516122379291906143d2565b60405180910390a2505050565b6000828152600360205260409020546001600160a01b03166122bf5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a74565b60008281526007602090815260409091208251610baa92840190613583565b6012805460ff191660ff8d161790556122f960108b8b613607565b5061230660118989613607565b50600f54610100900460ff1661237d57336001600160a01b03167f5463569dcc320958360074a9ab27e809e8a6942c394fb151d139b5f7b4ecb1bd8c8c8c8a8a8a8a8a42436040516123619a999897969594939291906143e6565b60405180910390a2600f805461ff0019166101001790556123cf565b60125460405133917fe5c4cf86b1815151e6f453e1e133d4454ae3b0b07145db39f2e0178685deac84916123c69160ff16908e908e908c908c908c908c908c90429043906143e6565b60405180910390a25b6032815111156124135760405162461bcd60e51b815260206004820152600f60248201526e546f6f204d616e792050726f6f667360881b6044820152606401610a74565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260005b82518110156126d85760006001600160a01b03168382815181106124705761247061444e565b6020026020010151600001516001600160a01b0316146125f2576000828560405160200161249f929190614464565b60405160208183030381529060405280519060200120905060006001828685815181106124ce576124ce61444e565b6020026020010151602001518786815181106124ec576124ec61444e565b60200260200101516040015188878151811061250a5761250a61444e565b6020026020010151606001516040516000815260200160405260405161254c949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa15801561256e573d6000803e3d6000fd5b50505060206040510351905084838151811061258c5761258c61444e565b6020026020010151600001516001600160a01b0316816001600160a01b0316146125ef5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b210383937b7b31039b4b3b732b960611b6044820152606401610a74565b50505b8281815181106126045761260461444e565b6020026020010151600001516001600160a01b03167f2819d8badf5cff2c9220b8ee99dacc14d67058e343d7f0c2c444d198507fe9418585848151811061264d5761264d61444e565b60200260200101516020015186858151811061266b5761266b61444e565b6020026020010151604001518786815181106126895761268961444e565b6020026020010151606001516040516126be949392919093845260ff9290921660208401526040830152606082015260800190565b60405180910390a2806126d08161449c565b91505061244a565b50505050505050505050505050565b60005b8181101561176f57601381815481106127055761270561444e565b6000918252602082200154604080516382c03da560e01b815290516001600160a01b03909216926382c03da59260048084019382900301818387803b15801561274d57600080fd5b505af1158015612761573d6000803e3d6000fd5b5050505080806127709061449c565b9150506126ea565b60005b6009548110156127e0576000600860006009848154811061279e5761279e61444e565b60009182526020808320909101546001600160a01b031683528201929092526040019020805463ffffffff1916905550806127d88161449c565b91505061277b565b506127ed6009600061367b565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6128333382612d0b565b61284f5760405162461bcd60e51b8152600401610a74906144b7565b610baa838383604051806020016040528060008152506128fb565b6001600160a01b038116600081815260086020526040808220805460ff1916600190811782556009805491820181559093526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917faf8fc8b6726138c96881c895390a08e9d91a94c288f06281e7f9821c49c7155b90610d799042904390918252602082015260400190565b6129053383612d0b565b6129215760405162461bcd60e51b8152600401610a74906144b7565b61292d84848484612e02565b50505050565b60006001600160a01b0386166129a25760405162461bcd60e51b815260206004820152602e60248201527f45524337323154656d706c6174653a3a20496e76616c6964206d696e7465722c60448201526d20207a65726f206164647265737360901b6064820152608401610a74565b84516129b590600d906020880190613583565b5083516129c990600e906020870190613583565b5060128054610100600160a81b0319166101006001600160a01b03861602179055604080516020810191829052600090819052612a0891600291613583565b50600f805461ffff19166001908117909155612a25908790612e35565b612a2e8661286a565b6001600160a01b0386166000908152600860205260409020805463ffffff0019166301010100178155612a62600184612244565b5050600f5460ff1695945050505050565b6001600160a01b03811660008181526008602052604090819020805460ff191681559051909133917fb572db0e6da4924b771ed1712b980d48b5992b9a1c27aede55fbb3318c48996a90610d799042904390918252602082015260400190565b82846001600160a01b0316867f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b88585604051612b109291906143d2565b60405180910390a460006109c45a612b289190614508565b905085612b7857612b72858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612e4f915050565b50612cf4565b6003861415612bc157612b728484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6792505050565b6002861415612cb5576000612c1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c13925060209150879050614508565b612f03565b90506000612c6785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612c6291506020905088614508565b612f61565b90506000612c7687848461306e565b6040519091506001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a2505050612cf4565b60405162461bcd60e51b815260206004820152601460248201527357726f6e67206f7065726174696f6e207479706560601b6044820152606401610a74565b505050505050565b60606002805461097c90613f7b565b6000818152600360205260408120546001600160a01b0316612d845760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a74565b6000612d8f83611773565b9050806001600160a01b0316846001600160a01b03161480612dca5750836001600160a01b0316612dbf846109ff565b6001600160a01b0316145b80612dfa57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b612e0d848484613170565b612e1984848484613310565b61292d5760405162461bcd60e51b8152600401610a749061451f565b61176f82826040518060200160405280600081525061340e565b6000806000845160208601878987f195945050505050565b600081516020830184f090506001600160a01b038116612ec95760405162461bcd60e51b815260206004820152601960248201527f436f756c64206e6f74206465706c6f7920636f6e7472616374000000000000006044820152606401610a74565b6040516001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a292915050565b6000612f10826020614571565b83511015612f585760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610a74565b50016020015190565b606081612f6f81601f614571565b1015612fae5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a74565b612fb88284614571565b84511015612ffc5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a74565b60608215801561301b5760405191506000825260208201604052613065565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561305457805183526020928301920161303c565b5050858452601f01601f1916604052505b50949350505050565b600080844710156130c15760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610a74565b825161310f5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610a74565b8383516020850187f590506001600160a01b038116612dfa5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610a74565b826001600160a01b031661318382611773565b6001600160a01b0316146131eb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a74565b6001600160a01b03821661324d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a74565b61325860008261217d565b6001600160a01b0383166000908152600460205260408120805460019290613281908490614508565b90915550506001600160a01b03821660009081526004602052604081208054600192906132af908490614571565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b1561340357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613354903390899088908890600401614589565b6020604051808303816000875af192505050801561338f575060408051601f3d908101601f1916820190925261338c918101906145c6565b60015b6133e9573d8080156133bd576040519150601f19603f3d011682016040523d82523d6000602084013e6133c2565b606091505b5080516133e15760405162461bcd60e51b8152600401610a749061451f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612dfa565b506001949350505050565b6134188383613441565b6134256000848484613310565b610baa5760405162461bcd60e51b8152600401610a749061451f565b6001600160a01b0382166134975760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a74565b6000818152600360205260409020546001600160a01b0316156134fc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a74565b6001600160a01b0382166000908152600460205260408120805460019290613525908490614571565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461358f90613f7b565b90600052602060002090601f0160209004810192826135b157600085556135f7565b82601f106135ca57805160ff19168380011785556135f7565b828001600101855582156135f7579182015b828111156135f75782518255916020019190600101906135dc565b50613603929150613695565b5090565b82805461361390613f7b565b90600052602060002090601f01602090048101928261363557600085556135f7565b82601f1061364e5782800160ff198235161785556135f7565b828001600101855582156135f7579182015b828111156135f7578235825591602001919060010190613660565b5080546000825590600052602060002090810190610f4491905b5b808211156136035760008155600101613696565b6001600160e01b031981168114610f4457600080fd5b6000602082840312156136d257600080fd5b81356136dd816136aa565b9392505050565b60005b838110156136ff5781810151838201526020016136e7565b8381111561292d5750506000910152565b600081518084526137288160208601602086016136e4565b601f01601f19169290920160200192915050565b6020815260006136dd6020830184613710565b60006020828403121561376157600080fd5b5035919050565b6001600160a01b0381168114610f4457600080fd5b6000806040838503121561379057600080fd5b823561379b81613768565b946020939093013593505050565b60008083601f8401126137bb57600080fd5b5081356001600160401b038111156137d257600080fd5b6020830191508360208285010111156137ea57600080fd5b9250929050565b60008060006040848603121561380657600080fd5b8335925060208401356001600160401b0381111561382357600080fd5b61382f868287016137a9565b9497909650939450505050565b60006020828403121561384e57600080fd5b81356136dd81613768565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561389757613897613859565b604052919050565b600082601f8301126138b057600080fd5b81356001600160401b038111156138c9576138c9613859565b6138dc601f8201601f191660200161386f565b8181528460208386010111156138f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561392157600080fd5b8235915060208301356001600160401b0381111561393e57600080fd5b61394a8582860161389f565b9150509250929050565b60006020828403121561396657600080fd5b81356001600160401b0381111561397c57600080fd5b820161012081850312156136dd57600080fd5b803560ff811681146139a057600080fd5b919050565b6000608082840312156139b757600080fd5b604051608081018181106001600160401b03821117156139d9576139d9613859565b60405290508082356139ea81613768565b81526139f86020840161398f565b602082015260408301356040820152606083013560608201525092915050565b600082601f830112613a2957600080fd5b813560206001600160401b03821115613a4457613a44613859565b613a52818360051b0161386f565b82815260079290921b84018101918181019086841115613a7157600080fd5b8286015b84811015613a9557613a8788826139a5565b835291830191608001613a75565b509695505050505050565b600080600080600080600080600080600060e08c8e031215613ac157600080fd5b613aca8c61398f565b9a506001600160401b038060208e01351115613ae557600080fd5b613af58e60208f01358f016137a9565b909b50995060408d0135811015613b0b57600080fd5b613b1b8e60408f01358f016137a9565b909950975060608d0135811015613b3157600080fd5b613b418e60608f01358f016137a9565b909750955060808d0135811015613b5757600080fd5b613b678e60808f01358f016137a9565b909550935060a08d0135925060c08d0135811015613b8457600080fd5b50613b958d60c08e01358e01613a18565b90509295989b509295989b9093969950565b600080600060608486031215613bbc57600080fd5b8335613bc781613768565b92506020840135613bd781613768565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015613c295783516001600160a01b031683529284019291840191600101613c04565b50909695505050505050565b600060208284031215613c4757600080fd5b6136dd8261398f565b600060208284031215613c6257600080fd5b81356001600160401b03811115613c7857600080fd5b612dfa8482850161389f565b60008060008060008060008060c0898b031215613ca057600080fd5b8835613cab81613768565b975060208901356001600160401b0380821115613cc757600080fd5b613cd38c838d016137a9565b909950975060408b0135915080821115613cec57600080fd5b613cf88c838d016137a9565b909750955060608b01359150613d0d82613768565b90935060808a013590613d1f82613768565b90925060a08a01359080821115613d3557600080fd5b50613d428b828c0161389f565b9150509295985092959890939650565b60008060408385031215613d6557600080fd5b8235613d7081613768565b915060208301358015158114613d8557600080fd5b809150509250929050565b600080600080600060808688031215613da857600080fd5b853594506020860135613dba81613768565b93506040860135925060608601356001600160401b03811115613ddc57600080fd5b613de8888289016137a9565b969995985093965092949392505050565b608081526000613e0c6080830187613710565b8281036020840152613e1e8187613710565b60ff959095166040840152505090151560609091015292915050565b60008083601f840112613e4c57600080fd5b5081356001600160401b03811115613e6357600080fd5b6020830191508360208260051b85010111156137ea57600080fd5b600080600080600080600080600060a08a8c031215613e9c57600080fd5b8935985060208a01356001600160401b0380821115613eba57600080fd5b613ec68d838e01613e3a565b909a50985060408c0135915080821115613edf57600080fd5b613eeb8d838e01613e3a565b909850965060608c0135915080821115613f0457600080fd5b613f108d838e01613e3a565b909650945060808c0135915080821115613f2957600080fd5b50613f368c828d01613e3a565b915080935050809150509295985092959850929598565b60008060408385031215613f6057600080fd5b8235613f6b81613768565b91506020830135613d8581613768565b600181811c90821680613f8f57607f821691505b60208210811415613fb057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e4147455200604082015260600190565b6020808252601c908201527f45524337323154656d706c6174653a206e6f74204e46544f776e657200000000604082015260600190565b6080815260006140376080830187613710565b6020830195909552506040810192909252606090910152919050565b60208082526021908201527f45524337323154656d706c6174653a204e4f54204d455441444154415f524f4c6040820152604560f81b606082015260800190565b6000808335601e198436030181126140ab57600080fd5b8301803591506001600160401b038211156140c557600080fd5b6020019150368190038213156137ea57600080fd5b6000808335601e198436030181126140f157600080fd5b8301803591506001600160401b0382111561410b57600080fd5b6020019150600781901b36038213156137ea57600080fd5b60006080828403121561413557600080fd5b6136dd83836139a5565b6020808252602c908201527f45524337323154656d706c6174653a2043616e6e6f74207472616e736665722060408201526b1d1a1a5cc81d1bdad95b925960a21b606082015260800190565b6000835161419d8184602088016136e4565b8351908301906141b18183602088016136e4565b01949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126141fa57600080fd5b83016020810192503590506001600160401b0381111561421957600080fd5b8036038313156137ea57600080fd5b8183526000602080850194508260005b8581101561426657813561424b81613768565b6001600160a01b031687529582019590820190600101614238565b509495945050505050565b81835260006001600160fb1b0383111561428a57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b878110156142f75782840389526142d882886141e3565b6142e38682846141ba565b9a87019a95505050908401906001016142c1565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156143655785840360bf19018352614343828f6141e3565b61434e8682846141ba565b955050506020928301929190910190600101614328565b505050828103604084015261437b81898b614228565b90508281036060840152614390818789614271565b905082810360808401526143a58185876142a7565b9c9b505050505050505050505050565b6000602082840312156143c757600080fd5b81516136dd81613768565b602081526000612dfa6020830184866141ba565b60ff8b16815260e06020820152600061440360e083018b8d6141ba565b8281036040840152614416818a8c6141ba565b9050828103606084015261442b81888a6141ba565b6080840196909652505060a081019290925260c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600083516144768184602088016136e4565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156144b0576144b0614486565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008282101561451a5761451a614486565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000821982111561458457614584614486565b500190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906145bc90830184613710565b9695505050505050565b6000602082840312156145d857600080fd5b81516136dd816136aa56fe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa2646970667358221220167cbbb235398818db92650684bdee471f8af67a58d8161b297003a91da4cfa164736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106102685760003560e01c806354f6127f11610143578063a22cb465116100bb578063d2786ba411610077578063d2786ba414610858578063d8053ad31461087d578063e086e5ec1461089c578063e38d7cad146108a4578063e985e9c5146108c4578063fe1ec8801461090d57005b8063a22cb465146107ab578063ac18de43146107cb578063b0c41ead146107eb578063c55f81261461080b578063c87b56dd1461081e578063ccd7d4761461083e57005b806370a082311161010a57806370a08231146106bc57806370c166d7146106ea57806382cf129d1461070a57806390184b021461071f57806395d89b411461075857806396fb3eaf1461076d57005b806354f6127f1461061a57806355f804b31461063a5780635d1ca6311461065a5780636352211e1461067c57806367530a611461069c57005b80631aa3adf9116101e1578063431053ac1161019d578063431053ac14610563578063466bca0214610583578063467c97f5146105a55780634a63740a146105c55780634b2ee5e9146105e55780634f189cb21461060557005b80631aa3adf9146104ab57806323b872dd146104cb578063273e06b3146104eb5780632d06177a1461050b578063392e53cd1461052b57806342842e0e1461054357005b80630e57c7e8116102305780630e57c7e81461032e57806310c558bf1461034e578063160a79251461036e578063162094c41461044b57806319a18a851461046b57806319c186e51461048b57005b806301ffc9a71461026a57806306fdde031461029f578063081812fc146102c1578063095ea7b3146102f95780630e05662e14610319575b005b34801561027657600080fd5b5061028a6102853660046136c0565b61092d565b60405190151581526020015b60405180910390f35b3480156102ab57600080fd5b506102b461096d565b604051610296919061373c565b3480156102cd57600080fd5b506102e16102dc36600461374f565b6109ff565b6040516001600160a01b039091168152602001610296565b34801561030557600080fd5b5061026861031436600461377d565b610a99565b34801561032557600080fd5b506102b4610baf565b34801561033a57600080fd5b506102686103493660046137f1565b610c3d565b34801561035a57600080fd5b5061026861036936600461383c565b610cb2565b34801561037a57600080fd5b5061041061038936600461383c565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600860209081526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b604051610296919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b34801561045757600080fd5b5061026861046636600461390e565b610d85565b34801561047757600080fd5b50610268610486366004613954565b610e13565b34801561049757600080fd5b506102686104a636600461383c565b610f47565b3480156104b757600080fd5b506102686104c6366004613aa0565b611010565b3480156104d757600080fd5b506102686104e6366004613ba7565b611065565b3480156104f757600080fd5b5061026861050636600461383c565b611137565b34801561051757600080fd5b5061026861052636600461383c565b61126d565b34801561053757600080fd5b50600f5460ff1661028a565b34801561054f57600080fd5b5061026861055e366004613ba7565b6112b0565b34801561056f57600080fd5b5061026861057e36600461383c565b611356565b34801561058f57600080fd5b5061059861148b565b6040516102969190613be8565b3480156105b157600080fd5b506102686105c0366004613c35565b6114ec565b3480156105d157600080fd5b506102686105e036600461383c565b611577565b3480156105f157600080fd5b506014546102e1906001600160a01b031681565b34801561061157600080fd5b5061026861163c565b34801561062657600080fd5b506102b461063536600461374f565b611680565b34801561064657600080fd5b50610268610655366004613c50565b611722565b34801561066657600080fd5b5060015b60405160ff9091168152602001610296565b34801561068857600080fd5b506102e161069736600461374f565b611773565b3480156106a857600080fd5b506102686106b73660046137f1565b6117ea565b3480156106c857600080fd5b506106dc6106d736600461383c565b61185a565b604051908152602001610296565b3480156106f657600080fd5b5061028a610705366004613c84565b6118e1565b34801561071657600080fd5b506102b46119fe565b34801561072b57600080fd5b5061028a61073a36600461383c565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561076457600080fd5b506102b4611a0b565b34801561077957600080fd5b5061028a61078836600461383c565b6001600160a01b0316600090815260086020526040902054610100900460ff1690565b3480156107b757600080fd5b506102686107c6366004613d52565b611a1a565b3480156107d757600080fd5b506102686107e636600461383c565b611ad8565b3480156107f757600080fd5b506102e161080636600461374f565b611b1b565b610268610819366004613d90565b611b45565b34801561082a57600080fd5b506102b461083936600461374f565b611b8d565b34801561084a57600080fd5b5060125461066a9060ff1681565b34801561086457600080fd5b5061086d611ceb565b6040516102969493929190613df9565b34801561088957600080fd5b50600f5461028a90610100900460ff1681565b610268611e3b565b3480156108b057600080fd5b506102e16108bf366004613e7e565b611e7d565b3480156108d057600080fd5b5061028a6108df366004613f4d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561091957600080fd5b5061026861092836600461383c565b61204d565b60006301ffc9a760e01b6001600160e01b03198316148061096757506001600160e01b031982166000908152600a602052604090205460ff165b92915050565b6060600d805461097c90613f7b565b80601f01602080910402602001604051908101604052809291908181526020018280546109a890613f7b565b80156109f55780601f106109ca576101008083540402835291602001916109f5565b820191906000526020600020905b8154815290600101906020018083116109d857829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610a7d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610aa482611773565b9050806001600160a01b0316836001600160a01b03161415610b125760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a74565b336001600160a01b0382161480610b2e5750610b2e81336108df565b610ba05760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a74565b610baa838361217d565b505050565b60118054610bbc90613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890613f7b565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b505050505081565b3360009081526015602052604090205460ff16610ca75760405162461bcd60e51b815260206004820152602260248201527f45524337323154656d706c6174653a204e4f5420455243323020436f6e74726160448201526118dd60f21b6064820152608401610a74565b610baa8383836121eb565b3360009081526008602052604090205460ff161515600114610ce65760405162461bcd60e51b8152600401610a7490613fb6565b6001600160a01b038116600081815260086020526040808220805462ff00001916620100001781556009805460018101825593526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa490610d799042904390918252602082015260400190565b60405180910390a35050565b610d8e82611773565b6001600160a01b0316336001600160a01b031614610dbe5760405162461bcd60e51b8152600401610a7490613fed565b610dc88282612244565b336001600160a01b03167f6de6cd3982065cbd31e789e3109106f4d76d1c8a46e85262045cf947fb3fd4ed82844243604051610e079493929190614024565b60405180910390a25050565b3360009081526008602052604090205462010000900460ff16610e485760405162461bcd60e51b8152600401610a7490614053565b610ef5610e586020830183613c35565b610e656020840184614094565b610e726040860186614094565b610e7f6060880188614094565b610e8c60808a018a614094565b60a08b0135610e9f6101008d018d6140da565b808060200260200160405190810160405280939291908181526020016000905b82821015610eeb57610edc60808302860136819003810190614123565b81526020019060010190610ebf565b50505050506122de565b610f4460c0820135610f0a60e0840184614094565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8592505050565b50565b3360009081526008602052604090205460ff161515600114610f7b5760405162461bcd60e51b8152600401610a7490613fb6565b6001600160a01b038116600081815260086020526040808220805463ff000000191663010000001781556009805460018101825593526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee90610d799042904390918252602082015260400190565b3360009081526008602052604090205462010000900460ff166110455760405162461bcd60e51b8152600401610a7490614053565b6110588b8b8b8b8b8b8b8b8b8b8b6122de565b5050505050505050505050565b806001146110855760405162461bcd60e51b8152600401610a749061413f565b6110ef6110ea60138054806020026020016040519081016040528092919081815260200182805480156110e157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c3575b50505050505190565b6126e7565b6110f7612778565b611102838383612829565b61110b8261286a565b506001600160a01b03166000908152600860205260409020805463ffffff001916630101010017905550565b3360009081526008602052604090205460ff161515600114806111885750336001600160a01b0382161480156111885750336000908152600860205260409020546301000000900460ff1615156001145b156111f0576001600160a01b03811660008181526008602052604090819020805463ff000000191681559051909133917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf390610d799042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610a74565b6112776001611773565b6001600160a01b0316336001600160a01b0316146112a75760405162461bcd60e51b8152600401610a7490613fed565b610f448161286a565b806001146112d05760405162461bcd60e51b8152600401610a749061413f565b6113336110ea60138054806020026020016040519081016040528092919081815260200182805480156110e1576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c35750505050505190565b61133b612778565b611102838383604051806020016040528060008152506128fb565b3360009081526008602052604090205460ff161515600114806113a65750336001600160a01b0382161480156113a657503360009081526008602052604090205462010000900460ff1615156001145b1561140d576001600160a01b03811660008181526008602052604090819020805462ff0000191681559051909133917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b90610d799042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610a74565b606060138054806020026020016040519081016040528092919081815260200182805480156109f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114c5575050505050905090565b3360009081526008602052604090205462010000900460ff166115215760405162461bcd60e51b8152600401610a7490614053565b6012805460ff191660ff831690811790915560408051918252426020830152439082015233907fa8336411cc72db0e5bdc4dff989eeb35879bafaceffb59b54b37645c3395adb99060600160405180910390a250565b3360009081526008602052604090205460ff1615156001146115ab5760405162461bcd60e51b8152600401610a7490613fb6565b6001600160a01b038116600081815260086020526040808220805461ff0019166101001781556009805460018101825593526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f90610d799042904390918252602082015260400190565b6116466001611773565b6001600160a01b0316336001600160a01b0316146116765760405162461bcd60e51b8152600401610a7490613fed565b61167e612778565b565b6000818152600b6020526040902080546060919061169d90613f7b565b80601f01602080910402602001604051908101604052809291908181526020018280546116c990613f7b565b80156117165780601f106116eb57610100808354040283529160200191611716565b820191906000526020600020905b8154815290600101906020018083116116f957829003601f168201915b50505050509050919050565b61172c6001611773565b6001600160a01b0316336001600160a01b03161461175c5760405162461bcd60e51b8152600401610a7490613fed565b805161176f906002906020840190613583565b5050565b6000818152600360205260408120546001600160a01b0316806109675760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a74565b336000908152600860205260409020546301000000900460ff16610ca75760405162461bcd60e51b815260206004820152602160248201527f45524337323154656d706c6174653a204e4f542053544f5245205550444154456044820152602960f91b6064820152608401610a74565b60006001600160a01b0382166118c55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a74565b506001600160a01b031660009081526004602052604090205490565b600f5460009060ff16156119525760405162461bcd60e51b815260206004820152603260248201527f45524337323154656d706c6174653a20746f6b656e20696e7374616e636520616044820152711b1c9958591e481a5b9a5d1a585b1a5e995960721b6064820152608401610a74565b60006119cc8a8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152508b92508991506129339050565b90508080156119e357506001600160a01b03841615155b156119f1576119f1846115ab565b9998505050505050505050565b60108054610bbc90613f7b565b6060600e805461097c90613f7b565b6001600160a01b038216331415611a735760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a74565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610d79565b611ae26001611773565b6001600160a01b0316336001600160a01b031614611b125760405162461bcd60e51b8152600401610a7490613fed565b610f4481612a73565b60098181548110611b2b57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff161515600114611b795760405162461bcd60e51b8152600401610a7490613fb6565b611b868585858585612ad3565b5050505050565b6000818152600360205260409020546060906001600160a01b0316611c0c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a74565b60008281526007602052604081208054611c2590613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5190613f7b565b8015611c9e5780601f10611c7357610100808354040283529160200191611c9e565b820191906000526020600020905b815481529060010190602001808311611c8157829003601f168201915b505050505090506000611caf612cfc565b825190915015611ce4578082604051602001611ccc92919061418b565b60405160208183030381529060405292505050919050565b5092915050565b60608060008060106011601260009054906101000a900460ff16600f60019054906101000a900460ff16838054611d2190613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d90613f7b565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b50505050509350828054611dad90613f7b565b80601f0160208091040260200160405190810160405280929190818152602001828054611dd990613f7b565b8015611e265780601f10611dfb57610100808354040283529160200191611e26565b820191906000526020600020905b815481529060010190602001808311611e0957829003601f168201915b50505050509250935093509350935090919293565b611e456001611773565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610f44573d6000803e3d6000fd5b60006002600c541415611ed25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a74565b6002600c5533600090815260086020526040902054610100900460ff16611f4a5760405162461bcd60e51b815260206004820152602660248201527f45524337323154656d706c6174653a204e4f542045524332304445504c4f5945604482015265525f524f4c4560d01b6064820152608401610a74565b601254604051630557fcfb60e41b815260009161010090046001600160a01b03169063557fcfb090611f90908e908e908e908e908e908e908e908e908e90600401614304565b6020604051808303816000875af1158015611faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd391906143b5565b6001600160a01b0381166000818152601560205260408120805460ff191660019081179091556013805491820181559091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b03191690911790559150506001600c559998505050505050505050565b3360009081526008602052604090205460ff1615156001148061209d5750336001600160a01b03821614801561209d57503360009081526008602052604090205460ff6101009091041615156001145b15612103576001600160a01b03811660008181526008602052604090819020805461ff00191681559051909133917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899790610d799042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610a74565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906121b282611773565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000838152600b60205260409020612204908383613607565b50827fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b283836040516122379291906143d2565b60405180910390a2505050565b6000828152600360205260409020546001600160a01b03166122bf5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a74565b60008281526007602090815260409091208251610baa92840190613583565b6012805460ff191660ff8d161790556122f960108b8b613607565b5061230660118989613607565b50600f54610100900460ff1661237d57336001600160a01b03167f5463569dcc320958360074a9ab27e809e8a6942c394fb151d139b5f7b4ecb1bd8c8c8c8a8a8a8a8a42436040516123619a999897969594939291906143e6565b60405180910390a2600f805461ff0019166101001790556123cf565b60125460405133917fe5c4cf86b1815151e6f453e1e133d4454ae3b0b07145db39f2e0178685deac84916123c69160ff16908e908e908c908c908c908c908c90429043906143e6565b60405180910390a25b6032815111156124135760405162461bcd60e51b815260206004820152600f60248201526e546f6f204d616e792050726f6f667360881b6044820152606401610a74565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260005b82518110156126d85760006001600160a01b03168382815181106124705761247061444e565b6020026020010151600001516001600160a01b0316146125f2576000828560405160200161249f929190614464565b60405160208183030381529060405280519060200120905060006001828685815181106124ce576124ce61444e565b6020026020010151602001518786815181106124ec576124ec61444e565b60200260200101516040015188878151811061250a5761250a61444e565b6020026020010151606001516040516000815260200160405260405161254c949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa15801561256e573d6000803e3d6000fd5b50505060206040510351905084838151811061258c5761258c61444e565b6020026020010151600001516001600160a01b0316816001600160a01b0316146125ef5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b210383937b7b31039b4b3b732b960611b6044820152606401610a74565b50505b8281815181106126045761260461444e565b6020026020010151600001516001600160a01b03167f2819d8badf5cff2c9220b8ee99dacc14d67058e343d7f0c2c444d198507fe9418585848151811061264d5761264d61444e565b60200260200101516020015186858151811061266b5761266b61444e565b6020026020010151604001518786815181106126895761268961444e565b6020026020010151606001516040516126be949392919093845260ff9290921660208401526040830152606082015260800190565b60405180910390a2806126d08161449c565b91505061244a565b50505050505050505050505050565b60005b8181101561176f57601381815481106127055761270561444e565b6000918252602082200154604080516382c03da560e01b815290516001600160a01b03909216926382c03da59260048084019382900301818387803b15801561274d57600080fd5b505af1158015612761573d6000803e3d6000fd5b5050505080806127709061449c565b9150506126ea565b60005b6009548110156127e0576000600860006009848154811061279e5761279e61444e565b60009182526020808320909101546001600160a01b031683528201929092526040019020805463ffffffff1916905550806127d88161449c565b91505061277b565b506127ed6009600061367b565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6128333382612d0b565b61284f5760405162461bcd60e51b8152600401610a74906144b7565b610baa838383604051806020016040528060008152506128fb565b6001600160a01b038116600081815260086020526040808220805460ff1916600190811782556009805491820181559093526000805160206145e483398151915290920180546001600160a01b0319168417905551909133917faf8fc8b6726138c96881c895390a08e9d91a94c288f06281e7f9821c49c7155b90610d799042904390918252602082015260400190565b6129053383612d0b565b6129215760405162461bcd60e51b8152600401610a74906144b7565b61292d84848484612e02565b50505050565b60006001600160a01b0386166129a25760405162461bcd60e51b815260206004820152602e60248201527f45524337323154656d706c6174653a3a20496e76616c6964206d696e7465722c60448201526d20207a65726f206164647265737360901b6064820152608401610a74565b84516129b590600d906020880190613583565b5083516129c990600e906020870190613583565b5060128054610100600160a81b0319166101006001600160a01b03861602179055604080516020810191829052600090819052612a0891600291613583565b50600f805461ffff19166001908117909155612a25908790612e35565b612a2e8661286a565b6001600160a01b0386166000908152600860205260409020805463ffffff0019166301010100178155612a62600184612244565b5050600f5460ff1695945050505050565b6001600160a01b03811660008181526008602052604090819020805460ff191681559051909133917fb572db0e6da4924b771ed1712b980d48b5992b9a1c27aede55fbb3318c48996a90610d799042904390918252602082015260400190565b82846001600160a01b0316867f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b88585604051612b109291906143d2565b60405180910390a460006109c45a612b289190614508565b905085612b7857612b72858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612e4f915050565b50612cf4565b6003861415612bc157612b728484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6792505050565b6002861415612cb5576000612c1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c13925060209150879050614508565b612f03565b90506000612c6785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612c6291506020905088614508565b612f61565b90506000612c7687848461306e565b6040519091506001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a2505050612cf4565b60405162461bcd60e51b815260206004820152601460248201527357726f6e67206f7065726174696f6e207479706560601b6044820152606401610a74565b505050505050565b60606002805461097c90613f7b565b6000818152600360205260408120546001600160a01b0316612d845760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a74565b6000612d8f83611773565b9050806001600160a01b0316846001600160a01b03161480612dca5750836001600160a01b0316612dbf846109ff565b6001600160a01b0316145b80612dfa57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b612e0d848484613170565b612e1984848484613310565b61292d5760405162461bcd60e51b8152600401610a749061451f565b61176f82826040518060200160405280600081525061340e565b6000806000845160208601878987f195945050505050565b600081516020830184f090506001600160a01b038116612ec95760405162461bcd60e51b815260206004820152601960248201527f436f756c64206e6f74206465706c6f7920636f6e7472616374000000000000006044820152606401610a74565b6040516001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a292915050565b6000612f10826020614571565b83511015612f585760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610a74565b50016020015190565b606081612f6f81601f614571565b1015612fae5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a74565b612fb88284614571565b84511015612ffc5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a74565b60608215801561301b5760405191506000825260208201604052613065565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561305457805183526020928301920161303c565b5050858452601f01601f1916604052505b50949350505050565b600080844710156130c15760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610a74565b825161310f5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610a74565b8383516020850187f590506001600160a01b038116612dfa5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610a74565b826001600160a01b031661318382611773565b6001600160a01b0316146131eb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a74565b6001600160a01b03821661324d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a74565b61325860008261217d565b6001600160a01b0383166000908152600460205260408120805460019290613281908490614508565b90915550506001600160a01b03821660009081526004602052604081208054600192906132af908490614571565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b1561340357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613354903390899088908890600401614589565b6020604051808303816000875af192505050801561338f575060408051601f3d908101601f1916820190925261338c918101906145c6565b60015b6133e9573d8080156133bd576040519150601f19603f3d011682016040523d82523d6000602084013e6133c2565b606091505b5080516133e15760405162461bcd60e51b8152600401610a749061451f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612dfa565b506001949350505050565b6134188383613441565b6134256000848484613310565b610baa5760405162461bcd60e51b8152600401610a749061451f565b6001600160a01b0382166134975760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a74565b6000818152600360205260409020546001600160a01b0316156134fc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a74565b6001600160a01b0382166000908152600460205260408120805460019290613525908490614571565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461358f90613f7b565b90600052602060002090601f0160209004810192826135b157600085556135f7565b82601f106135ca57805160ff19168380011785556135f7565b828001600101855582156135f7579182015b828111156135f75782518255916020019190600101906135dc565b50613603929150613695565b5090565b82805461361390613f7b565b90600052602060002090601f01602090048101928261363557600085556135f7565b82601f1061364e5782800160ff198235161785556135f7565b828001600101855582156135f7579182015b828111156135f7578235825591602001919060010190613660565b5080546000825590600052602060002090810190610f4491905b5b808211156136035760008155600101613696565b6001600160e01b031981168114610f4457600080fd5b6000602082840312156136d257600080fd5b81356136dd816136aa565b9392505050565b60005b838110156136ff5781810151838201526020016136e7565b8381111561292d5750506000910152565b600081518084526137288160208601602086016136e4565b601f01601f19169290920160200192915050565b6020815260006136dd6020830184613710565b60006020828403121561376157600080fd5b5035919050565b6001600160a01b0381168114610f4457600080fd5b6000806040838503121561379057600080fd5b823561379b81613768565b946020939093013593505050565b60008083601f8401126137bb57600080fd5b5081356001600160401b038111156137d257600080fd5b6020830191508360208285010111156137ea57600080fd5b9250929050565b60008060006040848603121561380657600080fd5b8335925060208401356001600160401b0381111561382357600080fd5b61382f868287016137a9565b9497909650939450505050565b60006020828403121561384e57600080fd5b81356136dd81613768565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561389757613897613859565b604052919050565b600082601f8301126138b057600080fd5b81356001600160401b038111156138c9576138c9613859565b6138dc601f8201601f191660200161386f565b8181528460208386010111156138f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561392157600080fd5b8235915060208301356001600160401b0381111561393e57600080fd5b61394a8582860161389f565b9150509250929050565b60006020828403121561396657600080fd5b81356001600160401b0381111561397c57600080fd5b820161012081850312156136dd57600080fd5b803560ff811681146139a057600080fd5b919050565b6000608082840312156139b757600080fd5b604051608081018181106001600160401b03821117156139d9576139d9613859565b60405290508082356139ea81613768565b81526139f86020840161398f565b602082015260408301356040820152606083013560608201525092915050565b600082601f830112613a2957600080fd5b813560206001600160401b03821115613a4457613a44613859565b613a52818360051b0161386f565b82815260079290921b84018101918181019086841115613a7157600080fd5b8286015b84811015613a9557613a8788826139a5565b835291830191608001613a75565b509695505050505050565b600080600080600080600080600080600060e08c8e031215613ac157600080fd5b613aca8c61398f565b9a506001600160401b038060208e01351115613ae557600080fd5b613af58e60208f01358f016137a9565b909b50995060408d0135811015613b0b57600080fd5b613b1b8e60408f01358f016137a9565b909950975060608d0135811015613b3157600080fd5b613b418e60608f01358f016137a9565b909750955060808d0135811015613b5757600080fd5b613b678e60808f01358f016137a9565b909550935060a08d0135925060c08d0135811015613b8457600080fd5b50613b958d60c08e01358e01613a18565b90509295989b509295989b9093969950565b600080600060608486031215613bbc57600080fd5b8335613bc781613768565b92506020840135613bd781613768565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015613c295783516001600160a01b031683529284019291840191600101613c04565b50909695505050505050565b600060208284031215613c4757600080fd5b6136dd8261398f565b600060208284031215613c6257600080fd5b81356001600160401b03811115613c7857600080fd5b612dfa8482850161389f565b60008060008060008060008060c0898b031215613ca057600080fd5b8835613cab81613768565b975060208901356001600160401b0380821115613cc757600080fd5b613cd38c838d016137a9565b909950975060408b0135915080821115613cec57600080fd5b613cf88c838d016137a9565b909750955060608b01359150613d0d82613768565b90935060808a013590613d1f82613768565b90925060a08a01359080821115613d3557600080fd5b50613d428b828c0161389f565b9150509295985092959890939650565b60008060408385031215613d6557600080fd5b8235613d7081613768565b915060208301358015158114613d8557600080fd5b809150509250929050565b600080600080600060808688031215613da857600080fd5b853594506020860135613dba81613768565b93506040860135925060608601356001600160401b03811115613ddc57600080fd5b613de8888289016137a9565b969995985093965092949392505050565b608081526000613e0c6080830187613710565b8281036020840152613e1e8187613710565b60ff959095166040840152505090151560609091015292915050565b60008083601f840112613e4c57600080fd5b5081356001600160401b03811115613e6357600080fd5b6020830191508360208260051b85010111156137ea57600080fd5b600080600080600080600080600060a08a8c031215613e9c57600080fd5b8935985060208a01356001600160401b0380821115613eba57600080fd5b613ec68d838e01613e3a565b909a50985060408c0135915080821115613edf57600080fd5b613eeb8d838e01613e3a565b909850965060608c0135915080821115613f0457600080fd5b613f108d838e01613e3a565b909650945060808c0135915080821115613f2957600080fd5b50613f368c828d01613e3a565b915080935050809150509295985092959850929598565b60008060408385031215613f6057600080fd5b8235613f6b81613768565b91506020830135613d8581613768565b600181811c90821680613f8f57607f821691505b60208210811415613fb057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e4147455200604082015260600190565b6020808252601c908201527f45524337323154656d706c6174653a206e6f74204e46544f776e657200000000604082015260600190565b6080815260006140376080830187613710565b6020830195909552506040810192909252606090910152919050565b60208082526021908201527f45524337323154656d706c6174653a204e4f54204d455441444154415f524f4c6040820152604560f81b606082015260800190565b6000808335601e198436030181126140ab57600080fd5b8301803591506001600160401b038211156140c557600080fd5b6020019150368190038213156137ea57600080fd5b6000808335601e198436030181126140f157600080fd5b8301803591506001600160401b0382111561410b57600080fd5b6020019150600781901b36038213156137ea57600080fd5b60006080828403121561413557600080fd5b6136dd83836139a5565b6020808252602c908201527f45524337323154656d706c6174653a2043616e6e6f74207472616e736665722060408201526b1d1a1a5cc81d1bdad95b925960a21b606082015260800190565b6000835161419d8184602088016136e4565b8351908301906141b18183602088016136e4565b01949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126141fa57600080fd5b83016020810192503590506001600160401b0381111561421957600080fd5b8036038313156137ea57600080fd5b8183526000602080850194508260005b8581101561426657813561424b81613768565b6001600160a01b031687529582019590820190600101614238565b509495945050505050565b81835260006001600160fb1b0383111561428a57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b878110156142f75782840389526142d882886141e3565b6142e38682846141ba565b9a87019a95505050908401906001016142c1565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156143655785840360bf19018352614343828f6141e3565b61434e8682846141ba565b955050506020928301929190910190600101614328565b505050828103604084015261437b81898b614228565b90508281036060840152614390818789614271565b905082810360808401526143a58185876142a7565b9c9b505050505050505050505050565b6000602082840312156143c757600080fd5b81516136dd81613768565b602081526000612dfa6020830184866141ba565b60ff8b16815260e06020820152600061440360e083018b8d6141ba565b8281036040840152614416818a8c6141ba565b9050828103606084015261442b81888a6141ba565b6080840196909652505060a081019290925260c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600083516144768184602088016136e4565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156144b0576144b0614486565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008282101561451a5761451a614486565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000821982111561458457614584614486565b500190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906145bc90830184613710565b9695505050505050565b6000602082840312156145d857600080fd5b81516136dd816136aa56fe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa2646970667358221220167cbbb235398818db92650684bdee471f8af67a58d8161b297003a91da4cfa164736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/abis/FactoryRouter.json b/abis/FactoryRouter.json index 21d8a53..004b02e 100644 --- a/abis/FactoryRouter.json +++ b/abis/FactoryRouter.json @@ -22,7 +22,7 @@ }, { "internalType": "address", - "name": "_opfCollector", + "name": "_opcCollector", "type": "address" }, { @@ -58,7 +58,7 @@ { "indexed": false, "internalType": "address", - "name": "basetokenAddress", + "name": "baseTokenAddress", "type": "address" }, { @@ -216,11 +216,29 @@ { "indexed": false, "internalType": "uint256", - "name": "newFee", + "name": "newSwapOceanFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSwapNonOceanFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newConsumeFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newProviderFee", "type": "uint256" } ], - "name": "OPFFeeChanged", + "name": "OPCFeeChanged", "type": "event" }, { @@ -739,6 +757,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "consumeFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -842,20 +873,20 @@ }, { "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "dispensers", + "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], - "name": "dispenser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], "stateMutability": "view", "type": "function" }, @@ -872,25 +903,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "fixedPrice", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "fixedRate", @@ -904,6 +916,51 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "fixedrates", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDispensersContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFixedRatesContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getMinVestingPeriod", @@ -918,14 +975,8 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "baseToken", - "type": "address" - } - ], - "name": "getOPFFee", + "inputs": [], + "name": "getOPCConsumeFee", "outputs": [ { "internalType": "uint256", @@ -936,6 +987,152 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "baseToken", + "type": "address" + } + ], + "name": "getOPCFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOPCFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOPCProviderFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOceanTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolTemplates", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSSContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + } + ], + "name": "isDispenserContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_fixedRate", + "type": "address" + } + ], + "name": "isFixedRateContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oceanTokenAddress", + "type": "address" + } + ], + "name": "isOceanToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -955,6 +1152,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ssContract", + "type": "address" + } + ], + "name": "isSSContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minVestingPeriodInBlocks", @@ -971,17 +1187,17 @@ { "inputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "name": "oceanTokens", "outputs": [ { - "internalType": "bool", + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], "stateMutability": "view", @@ -989,7 +1205,7 @@ }, { "inputs": [], - "name": "opfCollector", + "name": "opcCollector", "outputs": [ { "internalType": "address", @@ -1000,6 +1216,38 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poolTemplates", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "providerFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1081,17 +1329,30 @@ { "inputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "name": "ssContracts", "outputs": [ { - "internalType": "bool", + "internalType": "address", "name": "", - "type": "bool" + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "swapNonOceanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "stateMutability": "view", @@ -1129,16 +1390,31 @@ "internalType": "uint256", "name": "_newSwapOceanFee", "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_newSwapNonOceanFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_newConsumeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_newProviderFee", + "type": "uint256" } ], - "name": "updateOPFFee", + "name": "updateOPCFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], - "bytecode": "0x60806040526225049060055566038d7ea4c680006006553480156200002357600080fd5b5060405162003748380380620037488339810160408190526200004691620003c3565b8282826001600160a01b038316620000bb5760405162461bcd60e51b815260206004820152602d60248201527f42466163746f72793a20696e76616c69642062706f6f6c2074656d706c61746560448201526c207a65726f206164647265737360981b60648201526084015b60405180910390fd5b6001600160a01b038216620001135760405162461bcd60e51b815260206004820152601660248201527f42466163746f72793a207a65726f2061646472657373000000000000000000006044820152606401620000b2565b600080546001600160a01b0319166001600160a01b0384161790556200015a836001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b805115620002095760005b8151811015620002075760006001600160a01b0316336001600160a01b0316838381518110620001995762000199620004e3565b602090810291909101810151604080516000808252938101849052908101929092526001600160a01b0316907fbb6121447d29a04cc37bfd93cdf6a9dd08229f2d941116c1528f04698c4e790e9060600160405180910390a480620001fe81620004f9565b91505062000165565b505b5050506001600160a01b038516620002705760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c696420726f75746572206f776044820152623732b960e91b6064820152608401620000b2565b6001600160a01b038216620002d45760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c6964206f7066436f6c6c65636044820152623a37b960e91b6064820152608401620000b2565b6001600160a01b0384166200033f5760405162461bcd60e51b815260206004820152602a60248201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604482015269656e206164647265737360b01b6064820152608401620000b2565b50600280546001600160a01b03199081166001600160a01b039687161790915560008054909116918516919091178155919092168152600760205260409020805460ff191660011790555062000523565b80516001600160a01b0381168114620003a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215620003dc57600080fd5b620003e78662000390565b94506020620003f881880162000390565b9450620004086040880162000390565b9350620004186060880162000390565b60808801519093506001600160401b03808211156200043657600080fd5b818901915089601f8301126200044b57600080fd5b815181811115620004605762000460620003ad565b8060051b604051601f19603f83011681018181108582111715620004885762000488620003ad565b60405291825284820192508381018501918c831115620004a757600080fd5b938501935b82851015620004d057620004c08562000390565b84529385019392850192620004ac565b8096505050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200051c57634e487b7160e01b600052601160045260246000fd5b5060010190565b61321580620005336000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c8063a28f78f111610167578063d629a00a116100ce578063e525f99c11610087578063e525f99c14610556578063ec09302114610569578063ecdda58814610571578063ee3bc63514610584578063ee661f6714610597578063f8154aee146105ba57600080fd5b8063d629a00a146104f1578063d86850cc14610504578063de9a95a714610527578063e183fb3f1461053a578063e193faad14610543578063e4a28a52146102af57600080fd5b8063bc694ea211610120578063bc694ea21461048f578063c07c00fe14610497578063c1c436a5146104c3578063c36596a6146102f8578063c45a0155146104d6578063c6580d12146104e957600080fd5b8063a28f78f114610451578063b0e0d13614610464578063b19aaac61461046c578063b7b800a414610464578063ba019dab1461047f578063bc063e1a1461048757600080fd5b80637521aff91161020b578063867378c5116101c4578063867378c5146103f05780639381cd2b146103f8578063992e2a92146104005780639cdfa6ad146104085780639f2c010a1461041b5780639f587d4d1461042e57600080fd5b80637521aff91461035157806376c7a3c71461036457806379463a0e1461036c578063802d14221461039f57806382449375146103ca5780638552730a146103dd57600080fd5b8063218b53821161025d578063218b5382146102f857806329ce1ec514610307578063475030c01461031a57806347e1409414610323578063510f3465146103365780636c9fb6121461033e57600080fd5b80630318ad661461029a57806309a3bbe4146102af57806316592614146102ca57806316d9cb3d146102dd578063189d00ca146102f0575b600080fd5b6102ad6102a83660046128eb565b6105cd565b005b6102b7610673565b6040519081526020015b60405180910390f35b6102ad6102d83660046128eb565b610689565b6102ad6102eb3660046128eb565b610723565b6102b76107c0565b6102b7670de0b6b3a764000081565b6102ad6103153660046128eb565b6107d7565b6102b760055481565b6102ad6103313660046128eb565b610902565b6005546102b7565b6102ad61034c3660046128eb565b61099c565b6102ad61035f366004612908565b610a39565b6102b7610aa1565b61038f61037a3660046128eb565b60076020526000908152604090205460ff1681565b60405190151581526020016102c1565b6004546103b2906001600160a01b031681565b6040516001600160a01b0390911681526020016102c1565b6102b76103d836600461296d565b610ab6565b6002546103b2906001600160a01b031681565b6102b7610c3b565b6102b7610c52565b6102b7610c65565b6102ad6104163660046128eb565b610c83565b6102ad6104293660046128eb565b610d1d565b61038f61043c3660046128eb565b60096020526000908152604090205460ff1681565b6000546103b2906001600160a01b031681565b6102b7600281565b6102ad61047a3660046128eb565b610db7565b6102b7600181565b6102b7610e45565b6102b7610e58565b61038f6104a53660046128eb565b6001600160a01b031660009081526001602052604090205460ff1690565b6102ad6104d1366004612908565b610e77565b6003546103b2906001600160a01b031681565b6102b7600081565b6102ad6104ff3660046129f0565b610ed8565b61038f6105123660046128eb565b600a6020526000908152604090205460ff1681565b6102ad6105353660046128eb565b61105b565b6102b760065481565b6102ad6105513660046128eb565b6110f8565b6102ad6105643660046128eb565b611180565b6102b761124c565b6102ad61057f366004612a60565b61125f565b6103b2610592366004612ad6565b611d6b565b61038f6105a53660046128eb565b60086020526000908152604090205460ff1681565b6102b76105c83660046128eb565b612163565b6002546001600160a01b031633146106005760405162461bcd60e51b81526004016105f790612b86565b60405180910390fd5b6001600160a01b0381166106265760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191660011790555133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e791a350565b610686670de0b6b3a76400006032612c16565b81565b6002546001600160a01b031633146106b35760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166106d95760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191690555133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b391a350565b6002546001600160a01b0316331461074d5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166107735760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191660011790555133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b391a350565b6106866402540be400670de0b6b3a7640000612cc7565b6002546001600160a01b031633146108015760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166108675760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016105f7565b6003546001600160a01b0316156108b65760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016105f7565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b6002546001600160a01b0316331461092c5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109525760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191690555133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea48791a350565b6002546001600160a01b031633146109c65760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109ec5760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e54491a350565b6002546001600160a01b03163314610a635760405162461bcd60e51b81526004016105f790612b86565b600581905560405181815233907f5ee73342e684c0b848562c301fa2dc6b0146b266cfa12d4219fb04b316f7a475906020015b60405180910390a250565b610686620f4240670de0b6b3a7640000612cc7565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b239190612d43565b610b3f5760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b03861660009081526009602052604090205460ff16610bba5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016105f7565b60405163012c327560e01b81526001600160a01b0387169063012c327590610bee9033908990899089908990600401612da9565b6020604051808303816000875af1158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c319190612e38565b9695505050505050565b61068664e8d4a51000670de0b6b3a7640000612cc7565b610686670de0b6b3a76400006064612c16565b610c786003670de0b6b3a7640000612cc7565b610686906001612e51565b6002546001600160a01b03163314610cad5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610cd35760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191690555133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca9046091a350565b6002546001600160a01b03163314610d475760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610d6d5760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191690555133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b91a350565b6002546001600160a01b03163314610de15760405162461bcd60e51b81526004016105f790612b86565b610e0c816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6040516001600160a01b0382169033907fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac90600090a350565b610686600a670de0b6b3a7640000612cc7565b6001610e6d670de0b6b3a76400006002612c16565b6106869190612e69565b6002546001600160a01b03163314610ea15760405162461bcd60e51b81526004016105f790612b86565b600681905560405181815233907faacba7241fc949e401522d9591e2686bc54ecd5c340c571e85c45fdb57dc873890602001610a96565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190612d43565b610f605760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b0386166000908152600a602052604090205460ff16610fda5760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016105f7565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b031633146110855760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166110ab5760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191660011790555133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c91a350565b6002546001600160a01b031633146111225760405162461bcd60e51b81526004016105f790612b86565b611147816001600160a01b03166000908152600160205260409020805460ff19169055565b6040516001600160a01b0382169033907fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb290600090a350565b6002546001600160a01b031633146111aa5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166112005760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016105f7565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6106866002670de0b6b3a7640000612cc7565b60328111156112bb5760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016105f7565b60005b81811015611d6657600060405180606001604052808585858181106112e5576112e5612e80565b9050610140020160600160208101906112fe91906128eb565b6001600160a01b0316815260200185858581811061131e5761131e612e80565b9050610140020160a001602081019061133791906128eb565b6001600160a01b0316815260200185858581811061135757611357612e80565b9050610140020161012001602081019061137191906128eb565b6001600160a01b03166001600160a01b03168152509050600060405180608001604052808686868181106113a7576113a7612e80565b905061014002016080013581526020018686868181106113c9576113c9612e80565b9050610140020160c0013581526020018686868181106113eb576113eb612e80565b9050610140020160e00135815260200186868681811061140d5761140d612e80565b90506101400201610100013581525090506000600381111561143157611431612e96565b85858581811061144357611443612e80565b90506101400201604001602081019061145c9190612eac565b600381111561146d5761146d612e96565b141561163c576114d1333087878781811061148a5761148a612e80565b90506101400201608001358888888181106114a7576114a7612e80565b9050610140020160600160208101906114c091906128eb565b6001600160a01b0316929190612199565b6115578585858181106114e6576114e6612e80565b9050610140020160200160208101906114ff91906128eb565b86868681811061151157611511612e80565b905061014002016080013587878781811061152e5761152e612e80565b90506101400201606001602081019061154791906128eb565b6001600160a01b0316919061220a565b600085858581811061156b5761156b612e80565b90506101400201602001602081019061158491906128eb565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b81526004016115b1929190612ecd565b60408051808303816000875af11580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f39190612f32565b509050611636338288888881811061160d5761160d612e80565b9050610140020160a001602081019061162691906128eb565b6001600160a01b031691906122bc565b50611d51565b600185858581811061165057611650612e80565b9050610140020160400160208101906116699190612eac565b600381111561167a5761167a612e96565b14156118f557600085858581811061169457611694612e80565b9050610140020160200160208101906116ad91906128eb565b6001600160a01b031663caa011488787878181106116cd576116cd612e80565b9050610140020160600160208101906116e691906128eb565b8888888181106116f8576116f8612e80565b9050610140020160a001602081019061171191906128eb565b89898981811061172357611723612e80565b9050610140020160c001358a8a8a81811061174057611740612e80565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb9190612e38565b90506117e53330838989898181106114a7576114a7612e80565b6118268686868181106117fa576117fa612e80565b90506101400201602001602081019061181391906128eb565b8288888881811061152e5761152e612e80565b85858581811061183857611838612e80565b90506101400201602001602081019061185191906128eb565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b815260040161187e929190612ecd565b60408051808303816000875af115801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190612f32565b5050611636338787878181106118d8576118d8612e80565b9050610140020160c0013588888881811061160d5761160d612e80565b600285858581811061190957611909612e80565b9050610140020160400160208101906119229190612eac565b600381111561193357611933612e96565b1415611c6857600085858581811061194d5761194d612e80565b90506101400201602001602081019061196691906128eb565b6001600160a01b0316634c87087d87878781811061198657611986612e80565b90506101400201600001356040518263ffffffff1660e01b81526004016119af91815260200190565b61018060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612f56565b505050505050505050509150506000868686818110611a1257611a12612e80565b905061014002016020016020810190611a2b91906128eb565b6001600160a01b031663c99733a7888888818110611a4b57611a4b612e80565b9050610140020160000135898989818110611a6857611a68612e80565b9050610140020160c001356040518363ffffffff1660e01b8152600401611a99929190918252602082015260400190565b608060405180830381865afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ada919061300a565b5050509050611af73330838a8a8a8181106114a7576114a7612e80565b611b38878787818110611b0c57611b0c612e80565b905061014002016020016020810190611b2591906128eb565b8289898981811061152e5761152e612e80565b868686818110611b4a57611b4a612e80565b905061014002016020016020810190611b6391906128eb565b6001600160a01b031663825b5cd6888888818110611b8357611b83612e80565b9050610140020160000135898989818110611ba057611ba0612e80565b9050610140020160c001358a8a8a818110611bbd57611bbd612e80565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b50505050611c6133888888818110611c3d57611c3d612e80565b9050610140020160c00135846001600160a01b03166122bc9092919063ffffffff16565b5050611d51565b848484818110611c7a57611c7a612e80565b905061014002016020016020810190611c9391906128eb565b6001600160a01b0316631d746d83868686818110611cb357611cb3612e80565b9050610140020160a0016020810190611ccc91906128eb565b878787818110611cde57611cde612e80565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505050505b50508080611d5e90613040565b9150506112be565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd89190612d43565b611df45760405162461bcd60e51b81526004016105f790612d5e565b6008600084846000818110611e0b57611e0b612e80565b9050602002016020810190611e2091906128eb565b6001600160a01b0316815260208101919091526040016000205460ff16611e945760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016105f7565b600087876001818110611ea957611ea9612e80565b9050602002013511611eee5760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016105f7565b6000611f0060408a0160208b016128eb565b9050611f8984846002818110611f1857611f18612e80565b9050602002016020810190611f2d91906128eb565b85856000818110611f4057611f40612e80565b9050602002016020810190611f5591906128eb565b8a8a6004818110611f6857611f68612e80565b90506020020135846001600160a01b0316612199909392919063ffffffff16565b60408051808201825260009161204c91908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506122ec92505050565b90506001600160a01b03811661209c5760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016105f7565b600760006120b060408d0160208e016128eb565b6001600160a01b0316815260208101919091526040016000205460ff161561211657604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a2612156565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6001600160a01b03811660009081526007602052604081205460ff161561218c57506000919050565b505060065490565b919050565b6040516001600160a01b03808516602483015283166044820152606481018290526122049085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125f7565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190612e38565b6122899190612e51565b6040516001600160a01b03851660248201526044810182905290915061220490859063095ea7b360e01b906064016121cd565b6040516001600160a01b038316602482015260448101829052611d6690849063a9059cbb60e01b906064016121cd565b6000600160008360058151811061230557612305612e80565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166123785760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016105f7565b600060405180604001604052808460048151811061239857612398612e80565b6020908102919091018101516001600160a01b0390811683526000541691015283519091506123e190849060059081106123d4576123d4612e80565b60200260200101516126c9565b91506001600160a01b0382166124455760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016105f7565b6000829050806001600160a01b031663c070a6d88560008151811061246c5761246c612e80565b602002602001015130886000808d896040518863ffffffff1660e01b815260040161249d97969594939291906130c2565b6020604051808303816000875af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612d43565b6125235760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016105f7565b8360008151811061253657612536612e80565b60200260200101516001600160a01b03166353f0c3b48860006002811061255f5761255f612e80565b60200201518960016020020151868860038151811061258057612580612e80565b60200260200101518b6040518663ffffffff1660e01b81526004016125a9959493929190613128565b6020604051808303816000875af11580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec9190612d43565b505050949350505050565b600061264c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127599092919063ffffffff16565b805190915015611d66578080602001905181019061266a9190612d43565b611d665760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f7565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60606127688484600085612772565b90505b9392505050565b6060824710156127d35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f7565b843b6128215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f7565b600080866001600160a01b0316858760405161283d9190613190565b60006040518083038185875af1925050503d806000811461287a576040519150601f19603f3d011682016040523d82523d6000602084013e61287f565b606091505b509150915061288f82828661289a565b979650505050505050565b606083156128a957508161276b565b8251156128b95782518084602001fd5b8160405162461bcd60e51b81526004016105f791906131ac565b6001600160a01b03811681146128e857600080fd5b50565b6000602082840312156128fd57600080fd5b813561276b816128d3565b60006020828403121561291a57600080fd5b5035919050565b60008083601f84011261293357600080fd5b50813567ffffffffffffffff81111561294b57600080fd5b6020830191508360208260051b850101111561296657600080fd5b9250929050565b60008060008060006060868803121561298557600080fd5b8535612990816128d3565b9450602086013567ffffffffffffffff808211156129ad57600080fd5b6129b989838a01612921565b909650945060408801359150808211156129d257600080fd5b506129df88828901612921565b969995985093965092949392505050565b60008060008060008060c08789031215612a0957600080fd5b8635612a14816128d3565b95506020870135612a24816128d3565b945060408701359350606087013592506080870135612a42816128d3565b915060a0870135612a52816128d3565b809150509295509295509295565b60008060208385031215612a7357600080fd5b823567ffffffffffffffff80821115612a8b57600080fd5b818501915085601f830112612a9f57600080fd5b813581811115612aae57600080fd5b86602061014083028501011115612ac457600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a031215612af157600080fd5b6040880189811115612b0257600080fd5b8897503567ffffffffffffffff80821115612b1c57600080fd5b612b288b838c01612921565b909850965060608a0135915080821115612b4157600080fd5b612b4d8b838c01612921565b909650945060808a0135915080821115612b6657600080fd5b50612b738a828b01612921565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604082015269656e206164647265737360b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612c3057612c30612c00565b500290565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082612ce457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b8051801515811461219457600080fd5b600060208284031215612d5557600080fd5b61276b82612d33565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015612df8578435612de4816128d3565b841682529382019390820190600101612dd1565b5085810360408701528681526001600160fb1b03871115612e1857600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215612e4a57600080fd5b5051919050565b60008219821115612e6457612e64612c00565b500190565b600082821015612e7b57612e7b612c00565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215612ebe57600080fd5b81356004811061276b57600080fd5b60e08101818460005b6003811015612efe5781516001600160a01b0316835260209283019290910190600101612ed6565b505050606082018360005b6004811015612f28578151835260209283019290910190600101612f09565b5050509392505050565b60008060408385031215612f4557600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215612f7957600080fd5b8c51612f84816128d3565b60208e0151909c50612f95816128d3565b60408e015160608f0151919c509a50612fad816128d3565b60808e015160a08f0151919a5098509650612fca60c08e01612d33565b955060e08d015194506101008d015193506101208d015192506101408d01519150612ff86101608e01612d33565b90509295989b509295989b509295989b565b6000806000806080858703121561302057600080fd5b505082516020840151604085015160609095015191969095509092509050565b600060001982141561305457613054612c00565b5060010190565b600081518084526020808501945080840160005b8381101561308b5781518752958201959082019060010161306f565b509495945050505050565b8060005b60028110156122045781516001600160a01b031684526020938401939091019060010161309a565b6001600160a01b03888116825287166020820152610120604082018190526000906130ef8382018961305b565b9150508515156060830152841515608083015261310f60a0830185613096565b61311c60e0830184613096565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a06080820181905260009061288f9083018461305b565b60005b8381101561317f578181015183820152602001613167565b838111156122045750506000910152565b600082516131a2818460208701613164565b9190910192915050565b60208152600082518060208401526131cb816040850160208701613164565b601f01601f1916919091016040019291505056fea26469706673582212204ed3215981a25442d023b00f2a49cd2833bd47ec36633dcaa9f7d5dcb9dee20564736f6c634300080a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102955760003560e01c8063a28f78f111610167578063d629a00a116100ce578063e525f99c11610087578063e525f99c14610556578063ec09302114610569578063ecdda58814610571578063ee3bc63514610584578063ee661f6714610597578063f8154aee146105ba57600080fd5b8063d629a00a146104f1578063d86850cc14610504578063de9a95a714610527578063e183fb3f1461053a578063e193faad14610543578063e4a28a52146102af57600080fd5b8063bc694ea211610120578063bc694ea21461048f578063c07c00fe14610497578063c1c436a5146104c3578063c36596a6146102f8578063c45a0155146104d6578063c6580d12146104e957600080fd5b8063a28f78f114610451578063b0e0d13614610464578063b19aaac61461046c578063b7b800a414610464578063ba019dab1461047f578063bc063e1a1461048757600080fd5b80637521aff91161020b578063867378c5116101c4578063867378c5146103f05780639381cd2b146103f8578063992e2a92146104005780639cdfa6ad146104085780639f2c010a1461041b5780639f587d4d1461042e57600080fd5b80637521aff91461035157806376c7a3c71461036457806379463a0e1461036c578063802d14221461039f57806382449375146103ca5780638552730a146103dd57600080fd5b8063218b53821161025d578063218b5382146102f857806329ce1ec514610307578063475030c01461031a57806347e1409414610323578063510f3465146103365780636c9fb6121461033e57600080fd5b80630318ad661461029a57806309a3bbe4146102af57806316592614146102ca57806316d9cb3d146102dd578063189d00ca146102f0575b600080fd5b6102ad6102a83660046128eb565b6105cd565b005b6102b7610673565b6040519081526020015b60405180910390f35b6102ad6102d83660046128eb565b610689565b6102ad6102eb3660046128eb565b610723565b6102b76107c0565b6102b7670de0b6b3a764000081565b6102ad6103153660046128eb565b6107d7565b6102b760055481565b6102ad6103313660046128eb565b610902565b6005546102b7565b6102ad61034c3660046128eb565b61099c565b6102ad61035f366004612908565b610a39565b6102b7610aa1565b61038f61037a3660046128eb565b60076020526000908152604090205460ff1681565b60405190151581526020016102c1565b6004546103b2906001600160a01b031681565b6040516001600160a01b0390911681526020016102c1565b6102b76103d836600461296d565b610ab6565b6002546103b2906001600160a01b031681565b6102b7610c3b565b6102b7610c52565b6102b7610c65565b6102ad6104163660046128eb565b610c83565b6102ad6104293660046128eb565b610d1d565b61038f61043c3660046128eb565b60096020526000908152604090205460ff1681565b6000546103b2906001600160a01b031681565b6102b7600281565b6102ad61047a3660046128eb565b610db7565b6102b7600181565b6102b7610e45565b6102b7610e58565b61038f6104a53660046128eb565b6001600160a01b031660009081526001602052604090205460ff1690565b6102ad6104d1366004612908565b610e77565b6003546103b2906001600160a01b031681565b6102b7600081565b6102ad6104ff3660046129f0565b610ed8565b61038f6105123660046128eb565b600a6020526000908152604090205460ff1681565b6102ad6105353660046128eb565b61105b565b6102b760065481565b6102ad6105513660046128eb565b6110f8565b6102ad6105643660046128eb565b611180565b6102b761124c565b6102ad61057f366004612a60565b61125f565b6103b2610592366004612ad6565b611d6b565b61038f6105a53660046128eb565b60086020526000908152604090205460ff1681565b6102b76105c83660046128eb565b612163565b6002546001600160a01b031633146106005760405162461bcd60e51b81526004016105f790612b86565b60405180910390fd5b6001600160a01b0381166106265760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191660011790555133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e791a350565b610686670de0b6b3a76400006032612c16565b81565b6002546001600160a01b031633146106b35760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166106d95760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191690555133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b391a350565b6002546001600160a01b0316331461074d5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166107735760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191660011790555133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b391a350565b6106866402540be400670de0b6b3a7640000612cc7565b6002546001600160a01b031633146108015760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166108675760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016105f7565b6003546001600160a01b0316156108b65760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016105f7565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b6002546001600160a01b0316331461092c5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109525760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191690555133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea48791a350565b6002546001600160a01b031633146109c65760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109ec5760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e54491a350565b6002546001600160a01b03163314610a635760405162461bcd60e51b81526004016105f790612b86565b600581905560405181815233907f5ee73342e684c0b848562c301fa2dc6b0146b266cfa12d4219fb04b316f7a475906020015b60405180910390a250565b610686620f4240670de0b6b3a7640000612cc7565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b239190612d43565b610b3f5760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b03861660009081526009602052604090205460ff16610bba5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016105f7565b60405163012c327560e01b81526001600160a01b0387169063012c327590610bee9033908990899089908990600401612da9565b6020604051808303816000875af1158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c319190612e38565b9695505050505050565b61068664e8d4a51000670de0b6b3a7640000612cc7565b610686670de0b6b3a76400006064612c16565b610c786003670de0b6b3a7640000612cc7565b610686906001612e51565b6002546001600160a01b03163314610cad5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610cd35760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191690555133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca9046091a350565b6002546001600160a01b03163314610d475760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610d6d5760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191690555133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b91a350565b6002546001600160a01b03163314610de15760405162461bcd60e51b81526004016105f790612b86565b610e0c816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6040516001600160a01b0382169033907fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac90600090a350565b610686600a670de0b6b3a7640000612cc7565b6001610e6d670de0b6b3a76400006002612c16565b6106869190612e69565b6002546001600160a01b03163314610ea15760405162461bcd60e51b81526004016105f790612b86565b600681905560405181815233907faacba7241fc949e401522d9591e2686bc54ecd5c340c571e85c45fdb57dc873890602001610a96565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190612d43565b610f605760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b0386166000908152600a602052604090205460ff16610fda5760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016105f7565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b031633146110855760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166110ab5760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191660011790555133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c91a350565b6002546001600160a01b031633146111225760405162461bcd60e51b81526004016105f790612b86565b611147816001600160a01b03166000908152600160205260409020805460ff19169055565b6040516001600160a01b0382169033907fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb290600090a350565b6002546001600160a01b031633146111aa5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166112005760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016105f7565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6106866002670de0b6b3a7640000612cc7565b60328111156112bb5760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016105f7565b60005b81811015611d6657600060405180606001604052808585858181106112e5576112e5612e80565b9050610140020160600160208101906112fe91906128eb565b6001600160a01b0316815260200185858581811061131e5761131e612e80565b9050610140020160a001602081019061133791906128eb565b6001600160a01b0316815260200185858581811061135757611357612e80565b9050610140020161012001602081019061137191906128eb565b6001600160a01b03166001600160a01b03168152509050600060405180608001604052808686868181106113a7576113a7612e80565b905061014002016080013581526020018686868181106113c9576113c9612e80565b9050610140020160c0013581526020018686868181106113eb576113eb612e80565b9050610140020160e00135815260200186868681811061140d5761140d612e80565b90506101400201610100013581525090506000600381111561143157611431612e96565b85858581811061144357611443612e80565b90506101400201604001602081019061145c9190612eac565b600381111561146d5761146d612e96565b141561163c576114d1333087878781811061148a5761148a612e80565b90506101400201608001358888888181106114a7576114a7612e80565b9050610140020160600160208101906114c091906128eb565b6001600160a01b0316929190612199565b6115578585858181106114e6576114e6612e80565b9050610140020160200160208101906114ff91906128eb565b86868681811061151157611511612e80565b905061014002016080013587878781811061152e5761152e612e80565b90506101400201606001602081019061154791906128eb565b6001600160a01b0316919061220a565b600085858581811061156b5761156b612e80565b90506101400201602001602081019061158491906128eb565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b81526004016115b1929190612ecd565b60408051808303816000875af11580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f39190612f32565b509050611636338288888881811061160d5761160d612e80565b9050610140020160a001602081019061162691906128eb565b6001600160a01b031691906122bc565b50611d51565b600185858581811061165057611650612e80565b9050610140020160400160208101906116699190612eac565b600381111561167a5761167a612e96565b14156118f557600085858581811061169457611694612e80565b9050610140020160200160208101906116ad91906128eb565b6001600160a01b031663caa011488787878181106116cd576116cd612e80565b9050610140020160600160208101906116e691906128eb565b8888888181106116f8576116f8612e80565b9050610140020160a001602081019061171191906128eb565b89898981811061172357611723612e80565b9050610140020160c001358a8a8a81811061174057611740612e80565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb9190612e38565b90506117e53330838989898181106114a7576114a7612e80565b6118268686868181106117fa576117fa612e80565b90506101400201602001602081019061181391906128eb565b8288888881811061152e5761152e612e80565b85858581811061183857611838612e80565b90506101400201602001602081019061185191906128eb565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b815260040161187e929190612ecd565b60408051808303816000875af115801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190612f32565b5050611636338787878181106118d8576118d8612e80565b9050610140020160c0013588888881811061160d5761160d612e80565b600285858581811061190957611909612e80565b9050610140020160400160208101906119229190612eac565b600381111561193357611933612e96565b1415611c6857600085858581811061194d5761194d612e80565b90506101400201602001602081019061196691906128eb565b6001600160a01b0316634c87087d87878781811061198657611986612e80565b90506101400201600001356040518263ffffffff1660e01b81526004016119af91815260200190565b61018060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612f56565b505050505050505050509150506000868686818110611a1257611a12612e80565b905061014002016020016020810190611a2b91906128eb565b6001600160a01b031663c99733a7888888818110611a4b57611a4b612e80565b9050610140020160000135898989818110611a6857611a68612e80565b9050610140020160c001356040518363ffffffff1660e01b8152600401611a99929190918252602082015260400190565b608060405180830381865afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ada919061300a565b5050509050611af73330838a8a8a8181106114a7576114a7612e80565b611b38878787818110611b0c57611b0c612e80565b905061014002016020016020810190611b2591906128eb565b8289898981811061152e5761152e612e80565b868686818110611b4a57611b4a612e80565b905061014002016020016020810190611b6391906128eb565b6001600160a01b031663825b5cd6888888818110611b8357611b83612e80565b9050610140020160000135898989818110611ba057611ba0612e80565b9050610140020160c001358a8a8a818110611bbd57611bbd612e80565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b50505050611c6133888888818110611c3d57611c3d612e80565b9050610140020160c00135846001600160a01b03166122bc9092919063ffffffff16565b5050611d51565b848484818110611c7a57611c7a612e80565b905061014002016020016020810190611c9391906128eb565b6001600160a01b0316631d746d83868686818110611cb357611cb3612e80565b9050610140020160a0016020810190611ccc91906128eb565b878787818110611cde57611cde612e80565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505050505b50508080611d5e90613040565b9150506112be565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd89190612d43565b611df45760405162461bcd60e51b81526004016105f790612d5e565b6008600084846000818110611e0b57611e0b612e80565b9050602002016020810190611e2091906128eb565b6001600160a01b0316815260208101919091526040016000205460ff16611e945760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016105f7565b600087876001818110611ea957611ea9612e80565b9050602002013511611eee5760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016105f7565b6000611f0060408a0160208b016128eb565b9050611f8984846002818110611f1857611f18612e80565b9050602002016020810190611f2d91906128eb565b85856000818110611f4057611f40612e80565b9050602002016020810190611f5591906128eb565b8a8a6004818110611f6857611f68612e80565b90506020020135846001600160a01b0316612199909392919063ffffffff16565b60408051808201825260009161204c91908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506122ec92505050565b90506001600160a01b03811661209c5760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016105f7565b600760006120b060408d0160208e016128eb565b6001600160a01b0316815260208101919091526040016000205460ff161561211657604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a2612156565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6001600160a01b03811660009081526007602052604081205460ff161561218c57506000919050565b505060065490565b919050565b6040516001600160a01b03808516602483015283166044820152606481018290526122049085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125f7565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190612e38565b6122899190612e51565b6040516001600160a01b03851660248201526044810182905290915061220490859063095ea7b360e01b906064016121cd565b6040516001600160a01b038316602482015260448101829052611d6690849063a9059cbb60e01b906064016121cd565b6000600160008360058151811061230557612305612e80565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166123785760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016105f7565b600060405180604001604052808460048151811061239857612398612e80565b6020908102919091018101516001600160a01b0390811683526000541691015283519091506123e190849060059081106123d4576123d4612e80565b60200260200101516126c9565b91506001600160a01b0382166124455760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016105f7565b6000829050806001600160a01b031663c070a6d88560008151811061246c5761246c612e80565b602002602001015130886000808d896040518863ffffffff1660e01b815260040161249d97969594939291906130c2565b6020604051808303816000875af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612d43565b6125235760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016105f7565b8360008151811061253657612536612e80565b60200260200101516001600160a01b03166353f0c3b48860006002811061255f5761255f612e80565b60200201518960016020020151868860038151811061258057612580612e80565b60200260200101518b6040518663ffffffff1660e01b81526004016125a9959493929190613128565b6020604051808303816000875af11580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec9190612d43565b505050949350505050565b600061264c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127599092919063ffffffff16565b805190915015611d66578080602001905181019061266a9190612d43565b611d665760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f7565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60606127688484600085612772565b90505b9392505050565b6060824710156127d35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f7565b843b6128215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f7565b600080866001600160a01b0316858760405161283d9190613190565b60006040518083038185875af1925050503d806000811461287a576040519150601f19603f3d011682016040523d82523d6000602084013e61287f565b606091505b509150915061288f82828661289a565b979650505050505050565b606083156128a957508161276b565b8251156128b95782518084602001fd5b8160405162461bcd60e51b81526004016105f791906131ac565b6001600160a01b03811681146128e857600080fd5b50565b6000602082840312156128fd57600080fd5b813561276b816128d3565b60006020828403121561291a57600080fd5b5035919050565b60008083601f84011261293357600080fd5b50813567ffffffffffffffff81111561294b57600080fd5b6020830191508360208260051b850101111561296657600080fd5b9250929050565b60008060008060006060868803121561298557600080fd5b8535612990816128d3565b9450602086013567ffffffffffffffff808211156129ad57600080fd5b6129b989838a01612921565b909650945060408801359150808211156129d257600080fd5b506129df88828901612921565b969995985093965092949392505050565b60008060008060008060c08789031215612a0957600080fd5b8635612a14816128d3565b95506020870135612a24816128d3565b945060408701359350606087013592506080870135612a42816128d3565b915060a0870135612a52816128d3565b809150509295509295509295565b60008060208385031215612a7357600080fd5b823567ffffffffffffffff80821115612a8b57600080fd5b818501915085601f830112612a9f57600080fd5b813581811115612aae57600080fd5b86602061014083028501011115612ac457600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a031215612af157600080fd5b6040880189811115612b0257600080fd5b8897503567ffffffffffffffff80821115612b1c57600080fd5b612b288b838c01612921565b909850965060608a0135915080821115612b4157600080fd5b612b4d8b838c01612921565b909650945060808a0135915080821115612b6657600080fd5b50612b738a828b01612921565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604082015269656e206164647265737360b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612c3057612c30612c00565b500290565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082612ce457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b8051801515811461219457600080fd5b600060208284031215612d5557600080fd5b61276b82612d33565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015612df8578435612de4816128d3565b841682529382019390820190600101612dd1565b5085810360408701528681526001600160fb1b03871115612e1857600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215612e4a57600080fd5b5051919050565b60008219821115612e6457612e64612c00565b500190565b600082821015612e7b57612e7b612c00565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215612ebe57600080fd5b81356004811061276b57600080fd5b60e08101818460005b6003811015612efe5781516001600160a01b0316835260209283019290910190600101612ed6565b505050606082018360005b6004811015612f28578151835260209283019290910190600101612f09565b5050509392505050565b60008060408385031215612f4557600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215612f7957600080fd5b8c51612f84816128d3565b60208e0151909c50612f95816128d3565b60408e015160608f0151919c509a50612fad816128d3565b60808e015160a08f0151919a5098509650612fca60c08e01612d33565b955060e08d015194506101008d015193506101208d015192506101408d01519150612ff86101608e01612d33565b90509295989b509295989b509295989b565b6000806000806080858703121561302057600080fd5b505082516020840151604085015160609095015191969095509092509050565b600060001982141561305457613054612c00565b5060010190565b600081518084526020808501945080840160005b8381101561308b5781518752958201959082019060010161306f565b509495945050505050565b8060005b60028110156122045781516001600160a01b031684526020938401939091019060010161309a565b6001600160a01b03888116825287166020820152610120604082018190526000906130ef8382018961305b565b9150508515156060830152841515608083015261310f60a0830185613096565b61311c60e0830184613096565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a06080820181905260009061288f9083018461305b565b60005b8381101561317f578181015183820152602001613167565b838111156122045750506000910152565b600082516131a2818460208701613164565b9190910192915050565b60208152600082518060208401526131cb816040850160208701613164565b601f01601f1916919091016040019291505056fea26469706673582212204ed3215981a25442d023b00f2a49cd2833bd47ec36633dcaa9f7d5dcb9dee20564736f6c634300080a0033", + "bytecode": "0x608060405262250490600555600060065566038d7ea4c68000600755662386f26fc1000060085560006009553480156200003857600080fd5b50604051620046c1380380620046c18339810160408190526200005b9162000609565b8282826001600160a01b038316620000d05760405162461bcd60e51b815260206004820152602d60248201527f42466163746f72793a20696e76616c69642062706f6f6c2074656d706c61746560448201526c207a65726f206164647265737360981b60648201526084015b60405180910390fd5b6001600160a01b038216620001285760405162461bcd60e51b815260206004820152601660248201527f42466163746f72793a207a65726f2061646472657373000000000000000000006044820152606401620000c7565b600080546001600160a01b0319166001600160a01b0384161790556200014e8362000379565b805115620001fd5760005b8151811015620001fb5760006001600160a01b0316336001600160a01b03168383815181106200018d576200018d62000729565b602090810291909101810151604080516000808252938101849052908101929092526001600160a01b0316907fbb6121447d29a04cc37bfd93cdf6a9dd08229f2d941116c1528f04698c4e790e9060600160405180910390a480620001f2816200073f565b91505062000159565b505b5050506001600160a01b038516620002645760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c696420726f75746572206f776044820152623732b960e91b6064820152608401620000c7565b6001600160a01b038216620002c85760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c6964206f7063436f6c6c65636044820152623a37b960e91b6064820152608401620000c7565b6001600160a01b038416620003335760405162461bcd60e51b815260206004820152602a60248201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604482015269656e206164647265737360b01b6064820152608401620000c7565b600280546001600160a01b038088166001600160a01b03199283161790925560008054928516929091169190911790556200036e8462000470565b505050505062000769565b6001600160a01b038116620003e55760405162461bcd60e51b815260206004820152602b60248201527f466163746f7279526f757465723a20496e76616c696420706f6f6c54656d706c60448201526a617465206164647265737360a81b6064820152608401620000c7565b620003f081620004fb565b6200046d5760018054808201825560009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038416908117909155604051909133917fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac9190a35b50565b6200047b816200056d565b6200046d57600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416908117909155604051909133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e79190a350565b6000805b6001548110156200056457826001600160a01b0316600182815481106200052a576200052a62000729565b6000918252602090912001546001600160a01b031614156200054f5750600192915050565b806200055b816200073f565b915050620004ff565b50600092915050565b6000805b600a548110156200056457826001600160a01b0316600a82815481106200059c576200059c62000729565b6000918252602090912001546001600160a01b03161415620005c15750600192915050565b80620005cd816200073f565b91505062000571565b80516001600160a01b0381168114620005ee57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200062257600080fd5b6200062d86620005d6565b945060206200063e818801620005d6565b94506200064e60408801620005d6565b93506200065e60608801620005d6565b60808801519093506001600160401b03808211156200067c57600080fd5b818901915089601f8301126200069157600080fd5b815181811115620006a657620006a6620005f3565b8060051b604051601f19603f83011681018181108582111715620006ce57620006ce620005f3565b60405291825284820192508381018501918c831115620006ed57600080fd5b938501935b8285101562000716576200070685620005d6565b84529385019392850192620006f2565b8096505050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200076257634e487b7160e01b600052601160045260246000fd5b5060010190565b613f4880620007796000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c8063992e2a92116101ff578063c6580d121161011a578063e2bdeefa116100ad578063ecdda5881161007c578063ecdda58814610732578063ee3bc63514610745578063fca24bc614610758578063fdaa59bf1461076b57600080fd5b8063e2bdeefa1461070e578063e4a28a521461040f578063e525f99c14610717578063ec0930211461072a57600080fd5b8063dce2d0df116100e9578063dce2d0df146106c4578063de9a95a7146106df578063e183fb3f146106f2578063e193faad146106fb57600080fd5b8063c6580d1214610697578063c6e983d91461069f578063cb870cbf146106a8578063d629a00a146106b157600080fd5b8063b8421e2b11610192578063bfa04b8511610161578063bfa04b851461065e578063c07c00fe14610671578063c36596a61461049e578063c45a01551461068457600080fd5b8063b8421e2b14610633578063ba019dab14610646578063bc063e1a1461064e578063bc694ea21461065657600080fd5b8063b0e0d136116101ce578063b0e0d13614610605578063b19aaac61461060d578063b66806fb14610620578063b7b800a41461060557600080fd5b8063992e2a92146105cf5780639bc01b3c146105d75780639cdfa6ad146105df5780639f2c010a146105f257600080fd5b806347e14094116102ef57806376c7a3c711610282578063824493751161025157806382449375146105995780638552730a146105ac578063867378c5146105bf5780639381cd2b146105c757600080fd5b806376c7a3c7146105635780637cbf85bf1461056b5780637d28354d1461057e578063802d14221461058657600080fd5b80636c9fb612116102be5780636c9fb612146105225780636cdf90a114610535578063737e5ca0146105485780637521aff91461055057600080fd5b806347e14094146104ec57806350cbbe76146104ff578063510f3465146105125780636c45e8811461051a57600080fd5b806316d9cb3d1161036757806329ce1ec51161033657806329ce1ec5146104b5578063335b7fa2146104c857806346104ea8146104db578063475030c0146104e357600080fd5b806316d9cb3d14610483578063189d00ca14610496578063218b53821461049e578063241c7a6d146104ad57600080fd5b80631184e8d9116103a35780631184e8d91461042557806315c25dd51461044857806315d4c9eb1461045b578063165926141461047057600080fd5b80630318ad66146103ca57806303814238146103df57806309a3bbe41461040f575b600080fd5b6103dd6103d83660046135d3565b61077e565b005b6000546103f2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6104176107bd565b604051908152602001610406565b6104386104333660046135d3565b6107d3565b6040519015158152602001610406565b6104386104563660046135d3565b61083d565b61046361089e565b60405161040691906135f0565b6103dd61047e3660046135d3565b610900565b6103dd6104913660046135d3565b610ac2565b610417610b9a565b610417670de0b6b3a764000081565b610463610bb1565b6103dd6104c33660046135d3565b610c11565b6103f26104d636600461363d565b610d3c565b610463610d66565b61041760055481565b6103dd6104fa3660046135d3565b610dc6565b6103f261050d36600461363d565b610f87565b600554610417565b600954610417565b6103dd6105303660046135d3565b610f97565b6104386105433660046135d3565b61106f565b6104636110d0565b6103dd61055e36600461363d565b611130565b610417611197565b6103f261057936600461363d565b6111ac565b600854610417565b6004546103f2906001600160a01b031681565b6104176105a73660046136a2565b6111bc565b6002546103f2906001600160a01b031681565b61041761132e565b610417611345565b610417611358565b610463611376565b6103dd6105ed3660046135d3565b6113d6565b6103dd6106003660046135d3565b6115da565b610417600281565b6103dd61061b3660046135d3565b61179b565b6103f261062e36600461363d565b6117ce565b6104176106413660046135d3565b6117de565b610417600181565b610417611803565b610417611816565b6103dd61066c366004613725565b611835565b61043861067f3660046135d3565b6118c3565b6003546103f2906001600160a01b031681565b610417600081565b61041760095481565b61041760075481565b6103dd6106bf366004613757565b611924565b60065460075460408051928352602083019190915201610406565b6103dd6106ed3660046135d3565b611a94565b61041760065481565b6103dd6107093660046135d3565b611b6c565b61041760085481565b6103dd6107253660046135d3565b611b9f565b610417611c6b565b6103dd6107403660046137c7565b611c7e565b6103f261075336600461383d565b61278a565b6104386107663660046135d3565b612b46565b6103f261077936600461363d565b612ba7565b6002546001600160a01b031633146107b15760405162461bcd60e51b81526004016107a8906138ed565b60405180910390fd5b6107ba81612bb7565b50565b6107d0670de0b6b3a76400006032613933565b81565b6000805b600a5481101561083457826001600160a01b0316600a82815481106107fe576107fe613952565b6000918252602090912001546001600160a01b031614156108225750600192915050565b8061082c81613968565b9150506107d7565b50600092915050565b6000805b600b5481101561083457826001600160a01b0316600b828154811061086857610868613952565b6000918252602090912001546001600160a01b0316141561088c5750600192915050565b8061089681613968565b915050610841565b6060600d8054806020026020016040519081016040528092919081815260200182805480156108f657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108d8575b5050505050905090565b6002546001600160a01b0316331461092a5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b0381166109505760405162461bcd60e51b81526004016107a890613983565b60005b600d548110156109ac57816001600160a01b0316600d828154811061097a5761097a613952565b6000918252602090912001546001600160a01b0316141561099a576109ac565b806109a481613968565b915050610953565b600d54811015610abe57805b600d546109c7906001906139cc565b811015610a5257600d6109db8260016139e3565b815481106109eb576109eb613952565b600091825260209091200154600d80546001600160a01b039092169183908110610a1757610a17613952565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580610a4a81613968565b9150506109b8565b50600d805480610a6457610a646139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b39190a35b5050565b6002546001600160a01b03163314610aec5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610b125760405162461bcd60e51b81526004016107a890613a11565b610b1b8161106f565b6107ba57600c805460018101825560009182527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b038416908117909155604051909133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b39190a350565b6107d06402540be400670de0b6b3a7640000613a5a565b606060018054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b03163314610c3b5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610ca15760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016107a8565b6003546001600160a01b031615610cf05760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016107a8565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b600d8181548110610d4c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600c8054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b03163314610df05760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610e165760405162461bcd60e51b81526004016107a890613a7c565b60005b600b54811015610e7257816001600160a01b0316600b8281548110610e4057610e40613952565b6000918252602090912001546001600160a01b03161415610e6057610e72565b80610e6a81613968565b915050610e19565b600b54811015610abe57805b600b54610e8d906001906139cc565b811015610f1857600b610ea18260016139e3565b81548110610eb157610eb1613952565b600091825260209091200154600b80546001600160a01b039092169183908110610edd57610edd613952565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580610f1081613968565b915050610e7e565b50600b805480610f2a57610f2a6139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea4879190a35050565b60018181548110610d4c57600080fd5b6002546001600160a01b03163314610fc15760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610fe75760405162461bcd60e51b81526004016107a890613a7c565b610ff08161083d565b6107ba57600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b038416908117909155604051909133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e5449190a350565b6000805b600c5481101561083457826001600160a01b0316600c828154811061109a5761109a613952565b6000918252602090912001546001600160a01b031614156110be5750600192915050565b806110c881613968565b915050611073565b6060600b8054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b0316331461115a5760405162461bcd60e51b81526004016107a8906138ed565b600581905560405181815233907f5ee73342e684c0b848562c301fa2dc6b0146b266cfa12d4219fb04b316f7a4759060200160405180910390a250565b6107d0620f4240670de0b6b3a7640000613a5a565b600b8181548110610d4c57600080fd5b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112299190613ad6565b6112455760405162461bcd60e51b81526004016107a890613af1565b61124e8661106f565b6112ad5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016107a8565b60405163012c327560e01b81526001600160a01b0387169063012c3275906112e19033908990899089908990600401613b3c565b6020604051808303816000875af1158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113249190613bcb565b9695505050505050565b6107d064e8d4a51000670de0b6b3a7640000613a5a565b6107d0670de0b6b3a76400006064613933565b61136b6003670de0b6b3a7640000613a5a565b6107d09060016139e3565b6060600a8054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b031633146114005760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b0381166114695760405162461bcd60e51b815260206004820152602a60248201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604482015269656e206164647265737360b01b60648201526084016107a8565b60005b600a548110156114c557816001600160a01b0316600a828154811061149357611493613952565b6000918252602090912001546001600160a01b031614156114b3576114c5565b806114bd81613968565b91505061146c565b600a54811015610abe57805b600a546114e0906001906139cc565b81101561156b57600a6114f48260016139e3565b8154811061150457611504613952565b600091825260209091200154600a80546001600160a01b03909216918390811061153057611530613952565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558061156381613968565b9150506114d1565b50600a80548061157d5761157d6139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca904609190a35050565b6002546001600160a01b031633146116045760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b03811661162a5760405162461bcd60e51b81526004016107a890613a11565b60005b600c5481101561168657816001600160a01b0316600c828154811061165457611654613952565b6000918252602090912001546001600160a01b0316141561167457611686565b8061167e81613968565b91505061162d565b600c54811015610abe57805b600c546116a1906001906139cc565b81101561172c57600c6116b58260016139e3565b815481106116c5576116c5613952565b600091825260209091200154600c80546001600160a01b0390921691839081106116f1576116f1613952565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558061172481613968565b915050611692565b50600c80548061173e5761173e6139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b9190a35050565b6002546001600160a01b031633146117c55760405162461bcd60e51b81526004016107a8906138ed565b6107ba81612c3f565b600c8181548110610d4c57600080fd5b60006117e9826107d3565b156117f657505060065490565b505060075490565b919050565b6107d0600a670de0b6b3a7640000613a5a565b600161182b670de0b6b3a76400006002613933565b6107d091906139cc565b6002546001600160a01b0316331461185f5760405162461bcd60e51b81526004016107a8906138ed565b600684905560078390556008829055600981905560408051858152602081018590529081018390526060810182905233907fe6171cf0506862c0a0185f8c21dca979859d4eb63186eff63f1b3dd14926be7b9060800160405180910390a250505050565b6000805b60015481101561083457826001600160a01b0316600182815481106118ee576118ee613952565b6000918252602090912001546001600160a01b031614156119125750600192915050565b8061191c81613968565b9150506118c7565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190613ad6565b6119ac5760405162461bcd60e51b81526004016107a890613af1565b6119b586612b46565b611a135760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016107a8565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b158015611a7457600080fd5b505af1158015611a88573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b03163314611abe5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116611ae45760405162461bcd60e51b81526004016107a890613983565b611aed81612b46565b6107ba57600d805460018101825560009182527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b038416908117909155604051909133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c9190a350565b6002546001600160a01b03163314611b965760405162461bcd60e51b81526004016107a8906138ed565b6107ba81612d30565b6002546001600160a01b03163314611bc95760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016107a8565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6107d06002670de0b6b3a7640000613a5a565b6032811115611cda5760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016107a8565b60005b818110156127855760006040518060600160405280858585818110611d0457611d04613952565b905061014002016060016020810190611d1d91906135d3565b6001600160a01b03168152602001858585818110611d3d57611d3d613952565b9050610140020160a0016020810190611d5691906135d3565b6001600160a01b03168152602001858585818110611d7657611d76613952565b90506101400201610120016020810190611d9091906135d3565b6001600160a01b03166001600160a01b0316815250905060006040518060800160405280868686818110611dc657611dc6613952565b90506101400201608001358152602001868686818110611de857611de8613952565b9050610140020160c001358152602001868686818110611e0a57611e0a613952565b9050610140020160e001358152602001868686818110611e2c57611e2c613952565b905061014002016101000135815250905060006003811115611e5057611e50613be4565b858585818110611e6257611e62613952565b905061014002016040016020810190611e7b9190613bfa565b6003811115611e8c57611e8c613be4565b141561205b57611ef03330878787818110611ea957611ea9613952565b9050610140020160800135888888818110611ec657611ec6613952565b905061014002016060016020810190611edf91906135d3565b6001600160a01b0316929190612e9f565b611f76858585818110611f0557611f05613952565b905061014002016020016020810190611f1e91906135d3565b868686818110611f3057611f30613952565b9050610140020160800135878787818110611f4d57611f4d613952565b905061014002016060016020810190611f6691906135d3565b6001600160a01b03169190612f10565b6000858585818110611f8a57611f8a613952565b905061014002016020016020810190611fa391906135d3565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b8152600401611fd0929190613c1b565b60408051808303816000875af1158015611fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120129190613c80565b509050612055338288888881811061202c5761202c613952565b9050610140020160a001602081019061204591906135d3565b6001600160a01b03169190612fc2565b50612770565b600185858581811061206f5761206f613952565b9050610140020160400160208101906120889190613bfa565b600381111561209957612099613be4565b14156123145760008585858181106120b3576120b3613952565b9050610140020160200160208101906120cc91906135d3565b6001600160a01b031663caa011488787878181106120ec576120ec613952565b90506101400201606001602081019061210591906135d3565b88888881811061211757612117613952565b9050610140020160a001602081019061213091906135d3565b89898981811061214257612142613952565b9050610140020160c001358a8a8a81811061215f5761215f613952565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190613bcb565b9050612204333083898989818110611ec657611ec6613952565b61224586868681811061221957612219613952565b90506101400201602001602081019061223291906135d3565b82888888818110611f4d57611f4d613952565b85858581811061225757612257613952565b90506101400201602001602081019061227091906135d3565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b815260040161229d929190613c1b565b60408051808303816000875af11580156122bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122df9190613c80565b5050612055338787878181106122f7576122f7613952565b9050610140020160c0013588888881811061202c5761202c613952565b600285858581811061232857612328613952565b9050610140020160400160208101906123419190613bfa565b600381111561235257612352613be4565b141561268757600085858581811061236c5761236c613952565b90506101400201602001602081019061238591906135d3565b6001600160a01b0316634c87087d8787878181106123a5576123a5613952565b90506101400201600001356040518263ffffffff1660e01b81526004016123ce91815260200190565b61018060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190613ca4565b50505050505050505050915050600086868681811061243157612431613952565b90506101400201602001602081019061244a91906135d3565b6001600160a01b031663c99733a788888881811061246a5761246a613952565b905061014002016000013589898981811061248757612487613952565b9050610140020160c001356040518363ffffffff1660e01b81526004016124b8929190918252602082015260400190565b608060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f99190613d58565b50505090506125163330838a8a8a818110611ec657611ec6613952565b61255787878781811061252b5761252b613952565b90506101400201602001602081019061254491906135d3565b82898989818110611f4d57611f4d613952565b86868681811061256957612569613952565b90506101400201602001602081019061258291906135d3565b6001600160a01b031663825b5cd68888888181106125a2576125a2613952565b90506101400201600001358989898181106125bf576125bf613952565b9050610140020160c001358a8a8a8181106125dc576125dc613952565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b15801561262e57600080fd5b505af1158015612642573d6000803e3d6000fd5b505050506126803388888881811061265c5761265c613952565b9050610140020160c00135846001600160a01b0316612fc29092919063ffffffff16565b5050612770565b84848481811061269957612699613952565b9050610140020160200160208101906126b291906135d3565b6001600160a01b0316631d746d838686868181106126d2576126d2613952565b9050610140020160a00160208101906126eb91906135d3565b8787878181106126fd576126fd613952565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b15801561275757600080fd5b505af115801561276b573d6000803e3d6000fd5b505050505b5050808061277d90613968565b915050611cdd565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa1580156127d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f79190613ad6565b6128135760405162461bcd60e51b81526004016107a890613af1565b61283e8383600081811061282957612829613952565b905060200201602081019061045691906135d3565b6128955760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016107a8565b6000878760018181106128aa576128aa613952565b90506020020135116128ef5760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016107a8565b600061290160408a0160208b016135d3565b905061298a8484600281811061291957612919613952565b905060200201602081019061292e91906135d3565b8585600081811061294157612941613952565b905060200201602081019061295691906135d3565b8a8a600481811061296957612969613952565b90506020020135846001600160a01b0316612e9f909392919063ffffffff16565b604080518082018252600091612a4d91908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250612ff292505050565b90506001600160a01b038116612a9d5760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016107a8565b612ab061043360408c0160208d016135d3565b15612af957604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a2612b39565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6000805b600d5481101561083457826001600160a01b0316600d8281548110612b7157612b71613952565b6000918252602090912001546001600160a01b03161415612b955750600192915050565b80612b9f81613968565b915050612b4a565b600a8181548110610d4c57600080fd5b612bc0816107d3565b6107ba57600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416908117909155604051909133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e79190a350565b6001600160a01b038116612ca95760405162461bcd60e51b815260206004820152602b60248201527f466163746f7279526f757465723a20496e76616c696420706f6f6c54656d706c60448201526a617465206164647265737360a81b60648201526084016107a8565b612cb2816118c3565b6107ba5760018054808201825560009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038416908117909155604051909133917fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac9190a350565b60005b600154811015612d8c57816001600160a01b031660018281548110612d5a57612d5a613952565b6000918252602090912001546001600160a01b03161415612d7a57612d8c565b80612d8481613968565b915050612d33565b600154811015610abe57805b60018054612da691906139cc565b811015612e30576001612db982826139e3565b81548110612dc957612dc9613952565b600091825260209091200154600180546001600160a01b039092169183908110612df557612df5613952565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580612e2881613968565b915050612d98565b506001805480612e4257612e426139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb29190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052612f0a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526132e2565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f859190613bcb565b612f8f91906139e3565b6040516001600160a01b038516602482015260448101829052909150612f0a90859063095ea7b360e01b90606401612ed3565b6040516001600160a01b03831660248201526044810182905261278590849063a9059cbb60e01b90606401612ed3565b60006130178260058151811061300a5761300a613952565b60200260200101516118c3565b6130635760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016107a8565b600060405180604001604052808460048151811061308357613083613952565b6020908102919091018101516001600160a01b0390811683526000541691015283519091506130cc90849060059081106130bf576130bf613952565b60200260200101516133b4565b91506001600160a01b0382166131305760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016107a8565b6000829050806001600160a01b031663c070a6d88560008151811061315757613157613952565b602002602001015130886000808d896040518863ffffffff1660e01b81526004016131889796959493929190613df5565b6020604051808303816000875af11580156131a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cb9190613ad6565b61320e5760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016107a8565b8360008151811061322157613221613952565b60200260200101516001600160a01b03166383b87e5a8860006002811061324a5761324a613952565b60200201518960016020020151868860038151811061326b5761326b613952565b60200260200101518b6040518663ffffffff1660e01b8152600401613294959493929190613e5b565b6020604051808303816000875af11580156132b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d79190613ad6565b505050949350505050565b6000613337826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134449092919063ffffffff16565b80519091501561278557808060200190518101906133559190613ad6565b6127855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107a8565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b6060613453848460008561345d565b90505b9392505050565b6060824710156134be5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107a8565b843b61350c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a8565b600080866001600160a01b031685876040516135289190613ec3565b60006040518083038185875af1925050503d8060008114613565576040519150601f19603f3d011682016040523d82523d6000602084013e61356a565b606091505b509150915061357a828286613585565b979650505050505050565b60608315613594575081613456565b8251156135a45782518084602001fd5b8160405162461bcd60e51b81526004016107a89190613edf565b6001600160a01b03811681146107ba57600080fd5b6000602082840312156135e557600080fd5b8135613456816135be565b6020808252825182820181905260009190848201906040850190845b818110156136315783516001600160a01b03168352928401929184019160010161360c565b50909695505050505050565b60006020828403121561364f57600080fd5b5035919050565b60008083601f84011261366857600080fd5b50813567ffffffffffffffff81111561368057600080fd5b6020830191508360208260051b850101111561369b57600080fd5b9250929050565b6000806000806000606086880312156136ba57600080fd5b85356136c5816135be565b9450602086013567ffffffffffffffff808211156136e257600080fd5b6136ee89838a01613656565b9096509450604088013591508082111561370757600080fd5b5061371488828901613656565b969995985093965092949392505050565b6000806000806080858703121561373b57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060c0878903121561377057600080fd5b863561377b816135be565b9550602087013561378b816135be565b9450604087013593506060870135925060808701356137a9816135be565b915060a08701356137b9816135be565b809150509295509295509295565b600080602083850312156137da57600080fd5b823567ffffffffffffffff808211156137f257600080fd5b818501915085601f83011261380657600080fd5b81358181111561381557600080fd5b8660206101408302850101111561382b57600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a03121561385857600080fd5b604088018981111561386957600080fd5b8897503567ffffffffffffffff8082111561388357600080fd5b61388f8b838c01613656565b909850965060608a01359150808211156138a857600080fd5b6138b48b838c01613656565b909650945060808a01359150808211156138cd57600080fd5b506138da8a828b01613656565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561394d5761394d61391d565b500290565b634e487b7160e01b600052603260045260246000fd5b600060001982141561397c5761397c61391d565b5060010190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b6000828210156139de576139de61391d565b500390565b600082198211156139f6576139f661391d565b500190565b634e487b7160e01b600052603160045260246000fd5b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082613a7757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b805180151581146117fe57600080fd5b600060208284031215613ae857600080fd5b61345682613ac6565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015613b8b578435613b77816135be565b841682529382019390820190600101613b64565b5085810360408701528681526001600160fb1b03871115613bab57600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215613bdd57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613c0c57600080fd5b81356004811061345657600080fd5b60e08101818460005b6003811015613c4c5781516001600160a01b0316835260209283019290910190600101613c24565b505050606082018360005b6004811015613c76578151835260209283019290910190600101613c57565b5050509392505050565b60008060408385031215613c9357600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215613cc757600080fd5b8c51613cd2816135be565b60208e0151909c50613ce3816135be565b60408e015160608f0151919c509a50613cfb816135be565b60808e015160a08f0151919a5098509650613d1860c08e01613ac6565b955060e08d015194506101008d015193506101208d015192506101408d01519150613d466101608e01613ac6565b90509295989b509295989b509295989b565b60008060008060808587031215613d6e57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600081518084526020808501945080840160005b83811015613dbe57815187529582019590820190600101613da2565b509495945050505050565b8060005b6002811015612f0a5781516001600160a01b0316845260209384019390910190600101613dcd565b6001600160a01b0388811682528716602082015261012060408201819052600090613e2283820189613d8e565b91505085151560608301528415156080830152613e4260a0830185613dc9565b613e4f60e0830184613dc9565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a06080820181905260009061357a90830184613d8e565b60005b83811015613eb2578181015183820152602001613e9a565b83811115612f0a5750506000910152565b60008251613ed5818460208701613e97565b9190910192915050565b6020815260008251806020840152613efe816040850160208701613e97565b601f01601f1916919091016040019291505056fea26469706673582212201b6a3a4f25a36e842f9c585c4d52dd992864ee2912fe8429fd64dfa0fbd9063c64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103c55760003560e01c8063992e2a92116101ff578063c6580d121161011a578063e2bdeefa116100ad578063ecdda5881161007c578063ecdda58814610732578063ee3bc63514610745578063fca24bc614610758578063fdaa59bf1461076b57600080fd5b8063e2bdeefa1461070e578063e4a28a521461040f578063e525f99c14610717578063ec0930211461072a57600080fd5b8063dce2d0df116100e9578063dce2d0df146106c4578063de9a95a7146106df578063e183fb3f146106f2578063e193faad146106fb57600080fd5b8063c6580d1214610697578063c6e983d91461069f578063cb870cbf146106a8578063d629a00a146106b157600080fd5b8063b8421e2b11610192578063bfa04b8511610161578063bfa04b851461065e578063c07c00fe14610671578063c36596a61461049e578063c45a01551461068457600080fd5b8063b8421e2b14610633578063ba019dab14610646578063bc063e1a1461064e578063bc694ea21461065657600080fd5b8063b0e0d136116101ce578063b0e0d13614610605578063b19aaac61461060d578063b66806fb14610620578063b7b800a41461060557600080fd5b8063992e2a92146105cf5780639bc01b3c146105d75780639cdfa6ad146105df5780639f2c010a146105f257600080fd5b806347e14094116102ef57806376c7a3c711610282578063824493751161025157806382449375146105995780638552730a146105ac578063867378c5146105bf5780639381cd2b146105c757600080fd5b806376c7a3c7146105635780637cbf85bf1461056b5780637d28354d1461057e578063802d14221461058657600080fd5b80636c9fb612116102be5780636c9fb612146105225780636cdf90a114610535578063737e5ca0146105485780637521aff91461055057600080fd5b806347e14094146104ec57806350cbbe76146104ff578063510f3465146105125780636c45e8811461051a57600080fd5b806316d9cb3d1161036757806329ce1ec51161033657806329ce1ec5146104b5578063335b7fa2146104c857806346104ea8146104db578063475030c0146104e357600080fd5b806316d9cb3d14610483578063189d00ca14610496578063218b53821461049e578063241c7a6d146104ad57600080fd5b80631184e8d9116103a35780631184e8d91461042557806315c25dd51461044857806315d4c9eb1461045b578063165926141461047057600080fd5b80630318ad66146103ca57806303814238146103df57806309a3bbe41461040f575b600080fd5b6103dd6103d83660046135d3565b61077e565b005b6000546103f2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6104176107bd565b604051908152602001610406565b6104386104333660046135d3565b6107d3565b6040519015158152602001610406565b6104386104563660046135d3565b61083d565b61046361089e565b60405161040691906135f0565b6103dd61047e3660046135d3565b610900565b6103dd6104913660046135d3565b610ac2565b610417610b9a565b610417670de0b6b3a764000081565b610463610bb1565b6103dd6104c33660046135d3565b610c11565b6103f26104d636600461363d565b610d3c565b610463610d66565b61041760055481565b6103dd6104fa3660046135d3565b610dc6565b6103f261050d36600461363d565b610f87565b600554610417565b600954610417565b6103dd6105303660046135d3565b610f97565b6104386105433660046135d3565b61106f565b6104636110d0565b6103dd61055e36600461363d565b611130565b610417611197565b6103f261057936600461363d565b6111ac565b600854610417565b6004546103f2906001600160a01b031681565b6104176105a73660046136a2565b6111bc565b6002546103f2906001600160a01b031681565b61041761132e565b610417611345565b610417611358565b610463611376565b6103dd6105ed3660046135d3565b6113d6565b6103dd6106003660046135d3565b6115da565b610417600281565b6103dd61061b3660046135d3565b61179b565b6103f261062e36600461363d565b6117ce565b6104176106413660046135d3565b6117de565b610417600181565b610417611803565b610417611816565b6103dd61066c366004613725565b611835565b61043861067f3660046135d3565b6118c3565b6003546103f2906001600160a01b031681565b610417600081565b61041760095481565b61041760075481565b6103dd6106bf366004613757565b611924565b60065460075460408051928352602083019190915201610406565b6103dd6106ed3660046135d3565b611a94565b61041760065481565b6103dd6107093660046135d3565b611b6c565b61041760085481565b6103dd6107253660046135d3565b611b9f565b610417611c6b565b6103dd6107403660046137c7565b611c7e565b6103f261075336600461383d565b61278a565b6104386107663660046135d3565b612b46565b6103f261077936600461363d565b612ba7565b6002546001600160a01b031633146107b15760405162461bcd60e51b81526004016107a8906138ed565b60405180910390fd5b6107ba81612bb7565b50565b6107d0670de0b6b3a76400006032613933565b81565b6000805b600a5481101561083457826001600160a01b0316600a82815481106107fe576107fe613952565b6000918252602090912001546001600160a01b031614156108225750600192915050565b8061082c81613968565b9150506107d7565b50600092915050565b6000805b600b5481101561083457826001600160a01b0316600b828154811061086857610868613952565b6000918252602090912001546001600160a01b0316141561088c5750600192915050565b8061089681613968565b915050610841565b6060600d8054806020026020016040519081016040528092919081815260200182805480156108f657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108d8575b5050505050905090565b6002546001600160a01b0316331461092a5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b0381166109505760405162461bcd60e51b81526004016107a890613983565b60005b600d548110156109ac57816001600160a01b0316600d828154811061097a5761097a613952565b6000918252602090912001546001600160a01b0316141561099a576109ac565b806109a481613968565b915050610953565b600d54811015610abe57805b600d546109c7906001906139cc565b811015610a5257600d6109db8260016139e3565b815481106109eb576109eb613952565b600091825260209091200154600d80546001600160a01b039092169183908110610a1757610a17613952565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580610a4a81613968565b9150506109b8565b50600d805480610a6457610a646139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b39190a35b5050565b6002546001600160a01b03163314610aec5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610b125760405162461bcd60e51b81526004016107a890613a11565b610b1b8161106f565b6107ba57600c805460018101825560009182527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b038416908117909155604051909133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b39190a350565b6107d06402540be400670de0b6b3a7640000613a5a565b606060018054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b03163314610c3b5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610ca15760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016107a8565b6003546001600160a01b031615610cf05760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016107a8565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b600d8181548110610d4c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600c8054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b03163314610df05760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610e165760405162461bcd60e51b81526004016107a890613a7c565b60005b600b54811015610e7257816001600160a01b0316600b8281548110610e4057610e40613952565b6000918252602090912001546001600160a01b03161415610e6057610e72565b80610e6a81613968565b915050610e19565b600b54811015610abe57805b600b54610e8d906001906139cc565b811015610f1857600b610ea18260016139e3565b81548110610eb157610eb1613952565b600091825260209091200154600b80546001600160a01b039092169183908110610edd57610edd613952565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580610f1081613968565b915050610e7e565b50600b805480610f2a57610f2a6139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea4879190a35050565b60018181548110610d4c57600080fd5b6002546001600160a01b03163314610fc15760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116610fe75760405162461bcd60e51b81526004016107a890613a7c565b610ff08161083d565b6107ba57600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b038416908117909155604051909133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e5449190a350565b6000805b600c5481101561083457826001600160a01b0316600c828154811061109a5761109a613952565b6000918252602090912001546001600160a01b031614156110be5750600192915050565b806110c881613968565b915050611073565b6060600b8054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b0316331461115a5760405162461bcd60e51b81526004016107a8906138ed565b600581905560405181815233907f5ee73342e684c0b848562c301fa2dc6b0146b266cfa12d4219fb04b316f7a4759060200160405180910390a250565b6107d0620f4240670de0b6b3a7640000613a5a565b600b8181548110610d4c57600080fd5b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112299190613ad6565b6112455760405162461bcd60e51b81526004016107a890613af1565b61124e8661106f565b6112ad5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016107a8565b60405163012c327560e01b81526001600160a01b0387169063012c3275906112e19033908990899089908990600401613b3c565b6020604051808303816000875af1158015611300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113249190613bcb565b9695505050505050565b6107d064e8d4a51000670de0b6b3a7640000613a5a565b6107d0670de0b6b3a76400006064613933565b61136b6003670de0b6b3a7640000613a5a565b6107d09060016139e3565b6060600a8054806020026020016040519081016040528092919081815260200182805480156108f6576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108d8575050505050905090565b6002546001600160a01b031633146114005760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b0381166114695760405162461bcd60e51b815260206004820152602a60248201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604482015269656e206164647265737360b01b60648201526084016107a8565b60005b600a548110156114c557816001600160a01b0316600a828154811061149357611493613952565b6000918252602090912001546001600160a01b031614156114b3576114c5565b806114bd81613968565b91505061146c565b600a54811015610abe57805b600a546114e0906001906139cc565b81101561156b57600a6114f48260016139e3565b8154811061150457611504613952565b600091825260209091200154600a80546001600160a01b03909216918390811061153057611530613952565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558061156381613968565b9150506114d1565b50600a80548061157d5761157d6139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca904609190a35050565b6002546001600160a01b031633146116045760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b03811661162a5760405162461bcd60e51b81526004016107a890613a11565b60005b600c5481101561168657816001600160a01b0316600c828154811061165457611654613952565b6000918252602090912001546001600160a01b0316141561167457611686565b8061167e81613968565b91505061162d565b600c54811015610abe57805b600c546116a1906001906139cc565b81101561172c57600c6116b58260016139e3565b815481106116c5576116c5613952565b600091825260209091200154600c80546001600160a01b0390921691839081106116f1576116f1613952565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558061172481613968565b915050611692565b50600c80548061173e5761173e6139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b9190a35050565b6002546001600160a01b031633146117c55760405162461bcd60e51b81526004016107a8906138ed565b6107ba81612c3f565b600c8181548110610d4c57600080fd5b60006117e9826107d3565b156117f657505060065490565b505060075490565b919050565b6107d0600a670de0b6b3a7640000613a5a565b600161182b670de0b6b3a76400006002613933565b6107d091906139cc565b6002546001600160a01b0316331461185f5760405162461bcd60e51b81526004016107a8906138ed565b600684905560078390556008829055600981905560408051858152602081018590529081018390526060810182905233907fe6171cf0506862c0a0185f8c21dca979859d4eb63186eff63f1b3dd14926be7b9060800160405180910390a250505050565b6000805b60015481101561083457826001600160a01b0316600182815481106118ee576118ee613952565b6000918252602090912001546001600160a01b031614156119125750600192915050565b8061191c81613968565b9150506118c7565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190613ad6565b6119ac5760405162461bcd60e51b81526004016107a890613af1565b6119b586612b46565b611a135760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016107a8565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b158015611a7457600080fd5b505af1158015611a88573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b03163314611abe5760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116611ae45760405162461bcd60e51b81526004016107a890613983565b611aed81612b46565b6107ba57600d805460018101825560009182527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b038416908117909155604051909133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c9190a350565b6002546001600160a01b03163314611b965760405162461bcd60e51b81526004016107a8906138ed565b6107ba81612d30565b6002546001600160a01b03163314611bc95760405162461bcd60e51b81526004016107a8906138ed565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016107a8565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6107d06002670de0b6b3a7640000613a5a565b6032811115611cda5760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016107a8565b60005b818110156127855760006040518060600160405280858585818110611d0457611d04613952565b905061014002016060016020810190611d1d91906135d3565b6001600160a01b03168152602001858585818110611d3d57611d3d613952565b9050610140020160a0016020810190611d5691906135d3565b6001600160a01b03168152602001858585818110611d7657611d76613952565b90506101400201610120016020810190611d9091906135d3565b6001600160a01b03166001600160a01b0316815250905060006040518060800160405280868686818110611dc657611dc6613952565b90506101400201608001358152602001868686818110611de857611de8613952565b9050610140020160c001358152602001868686818110611e0a57611e0a613952565b9050610140020160e001358152602001868686818110611e2c57611e2c613952565b905061014002016101000135815250905060006003811115611e5057611e50613be4565b858585818110611e6257611e62613952565b905061014002016040016020810190611e7b9190613bfa565b6003811115611e8c57611e8c613be4565b141561205b57611ef03330878787818110611ea957611ea9613952565b9050610140020160800135888888818110611ec657611ec6613952565b905061014002016060016020810190611edf91906135d3565b6001600160a01b0316929190612e9f565b611f76858585818110611f0557611f05613952565b905061014002016020016020810190611f1e91906135d3565b868686818110611f3057611f30613952565b9050610140020160800135878787818110611f4d57611f4d613952565b905061014002016060016020810190611f6691906135d3565b6001600160a01b03169190612f10565b6000858585818110611f8a57611f8a613952565b905061014002016020016020810190611fa391906135d3565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b8152600401611fd0929190613c1b565b60408051808303816000875af1158015611fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120129190613c80565b509050612055338288888881811061202c5761202c613952565b9050610140020160a001602081019061204591906135d3565b6001600160a01b03169190612fc2565b50612770565b600185858581811061206f5761206f613952565b9050610140020160400160208101906120889190613bfa565b600381111561209957612099613be4565b14156123145760008585858181106120b3576120b3613952565b9050610140020160200160208101906120cc91906135d3565b6001600160a01b031663caa011488787878181106120ec576120ec613952565b90506101400201606001602081019061210591906135d3565b88888881811061211757612117613952565b9050610140020160a001602081019061213091906135d3565b89898981811061214257612142613952565b9050610140020160c001358a8a8a81811061215f5761215f613952565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190613bcb565b9050612204333083898989818110611ec657611ec6613952565b61224586868681811061221957612219613952565b90506101400201602001602081019061223291906135d3565b82888888818110611f4d57611f4d613952565b85858581811061225757612257613952565b90506101400201602001602081019061227091906135d3565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b815260040161229d929190613c1b565b60408051808303816000875af11580156122bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122df9190613c80565b5050612055338787878181106122f7576122f7613952565b9050610140020160c0013588888881811061202c5761202c613952565b600285858581811061232857612328613952565b9050610140020160400160208101906123419190613bfa565b600381111561235257612352613be4565b141561268757600085858581811061236c5761236c613952565b90506101400201602001602081019061238591906135d3565b6001600160a01b0316634c87087d8787878181106123a5576123a5613952565b90506101400201600001356040518263ffffffff1660e01b81526004016123ce91815260200190565b61018060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190613ca4565b50505050505050505050915050600086868681811061243157612431613952565b90506101400201602001602081019061244a91906135d3565b6001600160a01b031663c99733a788888881811061246a5761246a613952565b905061014002016000013589898981811061248757612487613952565b9050610140020160c001356040518363ffffffff1660e01b81526004016124b8929190918252602082015260400190565b608060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f99190613d58565b50505090506125163330838a8a8a818110611ec657611ec6613952565b61255787878781811061252b5761252b613952565b90506101400201602001602081019061254491906135d3565b82898989818110611f4d57611f4d613952565b86868681811061256957612569613952565b90506101400201602001602081019061258291906135d3565b6001600160a01b031663825b5cd68888888181106125a2576125a2613952565b90506101400201600001358989898181106125bf576125bf613952565b9050610140020160c001358a8a8a8181106125dc576125dc613952565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b15801561262e57600080fd5b505af1158015612642573d6000803e3d6000fd5b505050506126803388888881811061265c5761265c613952565b9050610140020160c00135846001600160a01b0316612fc29092919063ffffffff16565b5050612770565b84848481811061269957612699613952565b9050610140020160200160208101906126b291906135d3565b6001600160a01b0316631d746d838686868181106126d2576126d2613952565b9050610140020160a00160208101906126eb91906135d3565b8787878181106126fd576126fd613952565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b15801561275757600080fd5b505af115801561276b573d6000803e3d6000fd5b505050505b5050808061277d90613968565b915050611cdd565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa1580156127d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f79190613ad6565b6128135760405162461bcd60e51b81526004016107a890613af1565b61283e8383600081811061282957612829613952565b905060200201602081019061045691906135d3565b6128955760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016107a8565b6000878760018181106128aa576128aa613952565b90506020020135116128ef5760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016107a8565b600061290160408a0160208b016135d3565b905061298a8484600281811061291957612919613952565b905060200201602081019061292e91906135d3565b8585600081811061294157612941613952565b905060200201602081019061295691906135d3565b8a8a600481811061296957612969613952565b90506020020135846001600160a01b0316612e9f909392919063ffffffff16565b604080518082018252600091612a4d91908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250612ff292505050565b90506001600160a01b038116612a9d5760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016107a8565b612ab061043360408c0160208d016135d3565b15612af957604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a2612b39565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6000805b600d5481101561083457826001600160a01b0316600d8281548110612b7157612b71613952565b6000918252602090912001546001600160a01b03161415612b955750600192915050565b80612b9f81613968565b915050612b4a565b600a8181548110610d4c57600080fd5b612bc0816107d3565b6107ba57600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416908117909155604051909133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e79190a350565b6001600160a01b038116612ca95760405162461bcd60e51b815260206004820152602b60248201527f466163746f7279526f757465723a20496e76616c696420706f6f6c54656d706c60448201526a617465206164647265737360a81b60648201526084016107a8565b612cb2816118c3565b6107ba5760018054808201825560009182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038416908117909155604051909133917fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac9190a350565b60005b600154811015612d8c57816001600160a01b031660018281548110612d5a57612d5a613952565b6000918252602090912001546001600160a01b03161415612d7a57612d8c565b80612d8481613968565b915050612d33565b600154811015610abe57805b60018054612da691906139cc565b811015612e30576001612db982826139e3565b81548110612dc957612dc9613952565b600091825260209091200154600180546001600160a01b039092169183908110612df557612df5613952565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580612e2881613968565b915050612d98565b506001805480612e4257612e426139fb565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b0384169133917fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb29190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052612f0a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526132e2565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f859190613bcb565b612f8f91906139e3565b6040516001600160a01b038516602482015260448101829052909150612f0a90859063095ea7b360e01b90606401612ed3565b6040516001600160a01b03831660248201526044810182905261278590849063a9059cbb60e01b90606401612ed3565b60006130178260058151811061300a5761300a613952565b60200260200101516118c3565b6130635760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016107a8565b600060405180604001604052808460048151811061308357613083613952565b6020908102919091018101516001600160a01b0390811683526000541691015283519091506130cc90849060059081106130bf576130bf613952565b60200260200101516133b4565b91506001600160a01b0382166131305760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016107a8565b6000829050806001600160a01b031663c070a6d88560008151811061315757613157613952565b602002602001015130886000808d896040518863ffffffff1660e01b81526004016131889796959493929190613df5565b6020604051808303816000875af11580156131a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cb9190613ad6565b61320e5760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016107a8565b8360008151811061322157613221613952565b60200260200101516001600160a01b03166383b87e5a8860006002811061324a5761324a613952565b60200201518960016020020151868860038151811061326b5761326b613952565b60200260200101518b6040518663ffffffff1660e01b8152600401613294959493929190613e5b565b6020604051808303816000875af11580156132b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d79190613ad6565b505050949350505050565b6000613337826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134449092919063ffffffff16565b80519091501561278557808060200190518101906133559190613ad6565b6127855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107a8565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b6060613453848460008561345d565b90505b9392505050565b6060824710156134be5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107a8565b843b61350c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a8565b600080866001600160a01b031685876040516135289190613ec3565b60006040518083038185875af1925050503d8060008114613565576040519150601f19603f3d011682016040523d82523d6000602084013e61356a565b606091505b509150915061357a828286613585565b979650505050505050565b60608315613594575081613456565b8251156135a45782518084602001fd5b8160405162461bcd60e51b81526004016107a89190613edf565b6001600160a01b03811681146107ba57600080fd5b6000602082840312156135e557600080fd5b8135613456816135be565b6020808252825182820181905260009190848201906040850190845b818110156136315783516001600160a01b03168352928401929184019160010161360c565b50909695505050505050565b60006020828403121561364f57600080fd5b5035919050565b60008083601f84011261366857600080fd5b50813567ffffffffffffffff81111561368057600080fd5b6020830191508360208260051b850101111561369b57600080fd5b9250929050565b6000806000806000606086880312156136ba57600080fd5b85356136c5816135be565b9450602086013567ffffffffffffffff808211156136e257600080fd5b6136ee89838a01613656565b9096509450604088013591508082111561370757600080fd5b5061371488828901613656565b969995985093965092949392505050565b6000806000806080858703121561373b57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060c0878903121561377057600080fd5b863561377b816135be565b9550602087013561378b816135be565b9450604087013593506060870135925060808701356137a9816135be565b915060a08701356137b9816135be565b809150509295509295509295565b600080602083850312156137da57600080fd5b823567ffffffffffffffff808211156137f257600080fd5b818501915085601f83011261380657600080fd5b81358181111561381557600080fd5b8660206101408302850101111561382b57600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a03121561385857600080fd5b604088018981111561386957600080fd5b8897503567ffffffffffffffff8082111561388357600080fd5b61388f8b838c01613656565b909850965060608a01359150808211156138a857600080fd5b6138b48b838c01613656565b909650945060808a01359150808211156138cd57600080fd5b506138da8a828b01613656565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561394d5761394d61391d565b500290565b634e487b7160e01b600052603260045260246000fd5b600060001982141561397c5761397c61391d565b5060010190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b6000828210156139de576139de61391d565b500390565b600082198211156139f6576139f661391d565b500190565b634e487b7160e01b600052603160045260246000fd5b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082613a7757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b805180151581146117fe57600080fd5b600060208284031215613ae857600080fd5b61345682613ac6565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015613b8b578435613b77816135be565b841682529382019390820190600101613b64565b5085810360408701528681526001600160fb1b03871115613bab57600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215613bdd57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613c0c57600080fd5b81356004811061345657600080fd5b60e08101818460005b6003811015613c4c5781516001600160a01b0316835260209283019290910190600101613c24565b505050606082018360005b6004811015613c76578151835260209283019290910190600101613c57565b5050509392505050565b60008060408385031215613c9357600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215613cc757600080fd5b8c51613cd2816135be565b60208e0151909c50613ce3816135be565b60408e015160608f0151919c509a50613cfb816135be565b60808e015160a08f0151919a5098509650613d1860c08e01613ac6565b955060e08d015194506101008d015193506101208d015192506101408d01519150613d466101608e01613ac6565b90509295989b509295989b509295989b565b60008060008060808587031215613d6e57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600081518084526020808501945080840160005b83811015613dbe57815187529582019590820190600101613da2565b509495945050505050565b8060005b6002811015612f0a5781516001600160a01b0316845260209384019390910190600101613dcd565b6001600160a01b0388811682528716602082015261012060408201819052600090613e2283820189613d8e565b91505085151560608301528415156080830152613e4260a0830185613dc9565b613e4f60e0830184613dc9565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a06080820181905260009061357a90830184613d8e565b60005b83811015613eb2578181015183820152602001613e9a565b83811115612f0a5750506000910152565b60008251613ed5818460208701613e97565b9190910192915050565b6020815260008251806020840152613efe816040850160208701613e97565b601f01601f1916919091016040019291505056fea26469706673582212201b6a3a4f25a36e842f9c585c4d52dd992864ee2912fe8429fd64dfa0fbd9063c64736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/abis/FixedRateExchange.json b/abis/FixedRateExchange.json index 01254db..a00581a 100644 --- a/abis/FixedRateExchange.json +++ b/abis/FixedRateExchange.json @@ -1,918 +1,930 @@ - { - "_format": "hh-sol-artifact-1", - "contractName": "FixedRateExchange", - "sourceName": "contracts/pools/fixedRate/FixedRateExchange.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_router", - "type": "address" - }, - { - "internalType": "address", - "name": "_opfCollector", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - } - ], - "name": "ExchangeActivated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "allowedSwapper", - "type": "address" - } - ], - "name": "ExchangeAllowedSwapperChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "baseToken", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "dataToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fixedRate", - "type": "uint256" - } - ], - "name": "ExchangeCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - } - ], - "name": "ExchangeDeactivated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "withMint", - "type": "bool" - } - ], - "name": "ExchangeMintStateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newRate", - "type": "uint256" - } - ], - "name": "ExchangeRateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "feeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "feeAmount", - "type": "uint256" - } - ], - "name": "MarketFeeCollected", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "feeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "feeAmount", - "type": "uint256" - } - ], - "name": "OceanFeeCollected", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "by", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "baseTokenSwappedAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "dataTokenSwappedAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenOutAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "marketFeeAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "oceanFeeAmount", - "type": "uint256" - } - ], - "name": "Swapped", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokenCollected", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "dataTokenAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxBaseTokenAmount", - "type": "uint256" - } - ], - "name": "buyDT", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "dataTokenAmount", - "type": "uint256" - } - ], - "name": "calcBaseInGivenOutDT", - "outputs": [ - { - "internalType": "uint256", - "name": "baseTokenAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "baseTokenAmountBeforeFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "oceanFeeAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "marketFeeAmount", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "dataTokenAmount", - "type": "uint256" - } - ], - "name": "calcBaseOutGivenInDT", - "outputs": [ - { - "internalType": "uint256", - "name": "baseTokenAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "baseTokenAmountBeforeFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "oceanFeeAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "marketFeeAmount", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "collectBT", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "collectDT", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "collectMarketFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "collectOceanFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "dataToken", - "type": "address" - }, - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "uints", - "type": "uint256[]" - } - ], - "name": "createWithDecimals", - "outputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "baseToken", - "type": "address" - }, - { - "internalType": "address", - "name": "dataToken", - "type": "address" - }, - { - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - } - ], - "name": "generateExchangeId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "getAllowedSwapper", - "outputs": [ - { - "internalType": "address", - "name": "allowedSwapper", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "getBTSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "supply", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "getDTSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "supply", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "getExchange", - "outputs": [ - { - "internalType": "address", - "name": "exchangeOwner", - "type": "address" - }, - { - "internalType": "address", - "name": "dataToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "dtDecimals", - "type": "uint256" - }, - { - "internalType": "address", - "name": "baseToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "btDecimals", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "fixedRate", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "active", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "dtSupply", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "btSupply", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "dtBalance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "btBalance", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "withMint", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getExchanges", - "outputs": [ - { - "internalType": "bytes32[]", - "name": "", - "type": "bytes32[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "getFeesInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "marketFee", - "type": "uint256" - }, - { - "internalType": "address", - "name": "marketFeeCollector", - "type": "address" - }, - { - "internalType": "uint256", - "name": "opfFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "marketFeeAvailable", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "oceanFeeAvailable", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getNumberOfExchanges", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "basetokenAddress", - "type": "address" - } - ], - "name": "getOPFFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "getRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "isActive", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "opfCollector", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "dataTokenAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "minBaseTokenAmount", - "type": "uint256" - } - ], - "name": "sellDT", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "newAllowedSwapper", - "type": "address" - } - ], - "name": "setAllowedSwapper", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "newRate", - "type": "uint256" - } - ], - "name": "setRate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "name": "toggleExchangeState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "bool", - "name": "withMint", - "type": "bool" - } - ], - "name": "toggleMintState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_newMarketFee", - "type": "uint256" - } - ], - "name": "updateMarketFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_newMarketCollector", - "type": "address" - } - ], - "name": "updateMarketFeeCollector", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200337b3803806200337b833981016040819052620000349162000153565b6001600160a01b038216620000a05760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6001600160a01b038116620001045760405162461bcd60e51b8152602060048201526024808201527f46697865645261746545786368616e67653a2057726f6e67204f5046206164646044820152637265737360e01b606482015260840162000097565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556200018b565b80516001600160a01b03811681146200014e57600080fd5b919050565b600080604083850312156200016757600080fd5b620001728362000136565b9150620001826020840162000136565b90509250929050565b6131e0806200019b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063825b5cd6116100f9578063b686bcaf11610097578063c99733a711610071578063c99733a714610575578063f532129e14610588578063f8154aee1461059b578063f887ea40146105ae57600080fd5b8063b686bcaf1461053c578063c1f6572e1461054f578063c66274ea1461056257600080fd5b806388823872116100d357806388823872146104eb578063a28f78f1146104fe578063b32b56f914610511578063b42414291461053457600080fd5b8063825b5cd6146103c5578063855058dd146103d857806385fcbc2f146104d857600080fd5b80635c36901c116101665780636e4c6269116101405780636e4c62691461035957806371dc14b21461036c57806379dd28361461039f5780637c82ebe9146103b257600080fd5b80635c36901c1461030057806360311e9514610333578063680819eb1461034657600080fd5b806324cb477e116101a257806324cb477e14610247578063450dccc31461025c5780634c87087d1461026f5780635acfedc7146102ed57600080fd5b8063012c3275146101c95780630b3b430d146101ef5780631e2e3a6b14610232575b600080fd5b6101dc6101d7366004612b7e565b6105c1565b6040519081526020015b60405180910390f35b6102026101fd366004612c74565b610d31565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101e6565b61023a610e3b565b6040516101e69190612d74565b61025a610255366004612c74565b610e93565b005b61025a61026a366004612c74565b610f72565b61028261027d366004612c74565b6110bb565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101e6565b61025a6102fb366004612c74565b6111e4565b61032361030e366004612c74565b60009081526002602052604090205460ff1690565b60405190151581526020016101e6565b61025a610341366004612c8d565b6112e0565b61025a610354366004612ce9565b611382565b61025a610367366004612d0b565b61146f565b61037f61037a366004612ce9565b6118cd565b6040805194855260208501939093529183015260608201526080016101e6565b61025a6103ad366004612cb9565b611a3c565b61025a6103c0366004612c8d565b611ace565b61025a6103d3366004612d0b565b611b61565b6104c06103e6366004612c74565b60009081526002602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652938201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6040516001600160a01b0390911681526020016101e6565b6101dc6104e6366004612c74565b6120d6565b61025a6104f9366004612ce9565b61227d565b6001546104c0906001600160a01b031681565b6101dc61051f366004612c74565b60009081526002602052604090206003015490565b6003546101dc565b61025a61054a366004612c74565b6122f4565b6101dc61055d366004612b3b565b6123eb565b6101dc610570366004612c74565b612436565b61037f610583366004612ce9565b61279e565b61025a610596366004612c74565b6128a2565b6101dc6105a9366004612b20565b6129e2565b6000546104c0906001600160a01b031681565b600080546001600160a01b031633146106215760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061063f5761063f61316d565b60200260200101516001600160a01b031614156106ba5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b6001600160a01b03841661072c5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b836001600160a01b0316836000815181106107495761074961316d565b60200260200101516001600160a01b031614156107ce5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365746f6b656e0000000000000000006064820152608401610618565b816002815181106107e1576107e161316d565b6020026020010151600014156108505760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610618565b61088f836000815181106108665761086661316d565b602002602001015185856001815181106108825761088261316d565b60200260200101516123eb565b600081815260026020526040902060030154909150156109055760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610618565b6000600190508260048151811061091e5761091e61316d565b602002602001015160001415610932575060005b604051806101e001604052806001151581526020018560018151811061095a5761095a61316d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109925761099261316d565b60200260200101516001600160a01b03168152602001846002815181106109bb576109bb61316d565b60200260200101518152602001846001815181106109db576109db61316d565b60200260200101518152602001846000815181106109fb576109fb61316d565b60200260200101518152602001600081526020016000815260200184600381518110610a2957610a2961316d565b6020026020010151815260200185600281518110610a4957610a4961316d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610a8857610a8861316d565b6020908102919091018101516001600160a01b0390811690925260008581526002808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a01519584018054968a1696831696909617909555608089015160038085019190915560a08a0151600485015560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9092018490558551908716918691610bf457610bf461316d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c3a57610c3a61316d565b602002602001015187600281518110610c5557610c5561316d565b6020026020010151604051610c7f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610c9a57610c9a61316d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610ceb57610ceb61316d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260026020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095528387015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e1f906129e2565b9350806101600151925080610180015191505091939590929450565b60606003805480602002602001604051908101604052809291908181526020018280548015610e8957602002820191906000526020600020905b815481526020019060010190808311610e75575b5050505050905090565b600081815260026020526040902054819061010090046001600160a01b03163314610ed05760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604090205460ff1615610f2b57600082815260026020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260026020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260026020526040902054819061010090046001600160a01b03163314610faf5760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604080822060068101805493905560018101549054915163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052169063a9059cbb90604401602060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110549190612c57565b506000838152600260209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a4505050565b600081815260026020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905297850154881660608501819052600386015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548c16610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a0880152949093049098166101c08501529597949691959194909281908190819081906111b08e612436565b95506111bb8e6120d6565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b6000818152600260208190526040808320600b8101805494905590910154600154915163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561124e57600080fd5b505af1158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a35050565b600082815260026020526040902054829061010090046001600160a01b0316331461131d5760405162461bcd60e51b815260040161061890612e59565b600083815260026020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260026020526040902054829061010090046001600160a01b031633146113bf5760405162461bcd60e51b815260040161061890612e59565b816114185760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610618565b6000838152600260205260409081902060030183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114629086815260200190565b60405180910390a3505050565b600083815260026020526040902054839060ff1615156001146114a45760405162461bcd60e51b815260040161061890612e0e565b826114c15760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611524576000848152600260205260409020600c015461010090046001600160a01b031633146115245760405162461bcd60e51b815260040161061890612db8565b60008060008061153488886118cd565b93509350935093508584101561159b5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610618565b6000888152600260205260409020600b01546115b79083612a60565b6000898152600260205260409020600b810191909155600a01546115db9082612a60565b60008981526002602052604090819020600a81019290925560019091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd9061162990339030908c90600401612d50565b602060405180830381600087803b15801561164357600080fd5b505af1158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190612c57565b6116975760405162461bcd60e51b815260040161061890612f00565b6000888152600260205260409020600601546116b39088612a60565b60008981526002602052604090206006810191909155600701548411156117955760008881526002602081905260409182902090810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd9261172292610100909204169033908990600401612d50565b602060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117749190612c57565b6117905760405162461bcd60e51b815260040161061890612ea2565b611852565b6000888152600260205260409020600701546117b19084612a73565b60008981526002602081905260409182902060078101939093559190910154905163a9059cbb60e01b8152336004820152602481018690526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190612c57565b505b6000888152600260208181526040928390209091015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a35050505050505050565b600082815260026020526040812054819081908190869060ff1615156001146119085760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546119819061192990600a613079565b6000898152600260205260409020600501546119759061194a90600a613079565b60008b81526002602052604090206003015461197b90670de0b6b3a764000090611975908d90612a7f565b90612a8b565b90612a7f565b600088815260026020819052604090912001549094506119a9906001600160a01b03166129e2565b156119ef57600087815260026020819052604090912001546119ec90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b8790612a7f565b92505b600087815260026020526040902060080154611a1a90670de0b6b3a764000090611975908790612a7f565b9150611a3083611a2a8685612a73565b90612a73565b94505092959194509250565b600082815260026020526040902054829061010090046001600160a01b03163314611a795760405162461bcd60e51b815260040161061890612e59565b600083815260026020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611462565b6000828152600260205260409020600901546001600160a01b03163314611b305760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260026020526040902054839060ff161515600114611b965760405162461bcd60e51b815260040161061890612e0e565b82611bb35760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611c16576000848152600260205260409020600c015461010090046001600160a01b03163314611c165760405162461bcd60e51b815260040161061890612db8565b600080600080611c26888861279e565b935093509350935085841115611c8e5760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610618565b6000888152600260205260409020600b0154611caa9083612a60565b6000898152600260205260409020600b810191909155600a0154611cce9082612a60565b600089815260026020819052604091829020600a810193909355919091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd90611d1d90339030908990600401612d50565b602060405180830381600087803b158015611d3757600080fd5b505af1158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190612c57565b611d8b5760405162461bcd60e51b815260040161061890612ea2565b600088815260026020526040902060070154611da79084612a60565b6000898152600260205260409020600781019190915560060154871115611fad576000888152600260205260409020600c015460ff168015611e6f5750600088815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b158015611e3757600080fd5b505afa158015611e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6f9190612c57565b15611eed57600088815260026020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611ed057600080fd5b505af1158015611ee4573d6000803e3d6000fd5b50505050612069565b600088815260026020526040908190206001810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd92611f3a92610100909204169033908c90600401612d50565b602060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190612c57565b611fa85760405162461bcd60e51b815260040161061890612f00565b612069565b600088815260026020526040902060060154611fc99088612a73565b600089815260026020526040908190206006810192909255600190910154905163a9059cbb60e01b8152336004820152602481018990526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120679190612c57565b505b6000888152600260209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016118bb565b60008181526002602052604081205460ff166120f457506000919050565b600082815260026020819052604080832091820154915490516370a0823160e01b81526001600160a01b03610100909204821660048201529116906370a082319060240160206040518083038186803b15801561215057600080fd5b505afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190612d37565b60008481526002602081905260408083209182015491549051636eb1769f60e11b81526101009091046001600160a01b0390811660048301523060248301529394509192169063dd62ed3e9060440160206040518083038186803b1580156121ef57600080fd5b505afa158015612203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122279190612d37565b9050808210156122555760008481526002602052604090206007015461224e908390612a60565b9250612275565b600084815260026020526040902060070154612272908290612a60565b92505b50505b919050565b6000828152600260205260409020600901546001600160a01b031633146122df5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060080155565b6000818152600260208190526040808320600a8101805494905591820154600990920154905163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d6407905591016112d4565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090509392505050565b60008181526002602052604081205460ff1661245457506000919050565b6000828152600260205260409020600c015460ff16151560011480156125005750600082815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b1580156124c857600080fd5b505afa1580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612c57565b15612629576000828152600260209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd926004808301939192829003018186803b15801561255757600080fd5b505afa15801561256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258f9190612d37565b600083815260026020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea926004808301939192829003018186803b1580156125e157600080fd5b505afa1580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126199190612d37565b6126239190613140565b92915050565b6000828152600260205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a082319060240160206040518083038186803b15801561268457600080fd5b505afa158015612698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bc9190612d37565b600084815260026020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e9060440160206040518083038186803b15801561272257600080fd5b505afa158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a9190612d37565b9050808210156127815760008481526002602052604090206006015461224e908390612a60565b600084815260026020526040902060060154612272908290612a60565b600082815260026020526040812054819081908190869060ff1615156001146127d95760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546127fa9061192990600a613079565b60008881526002602081905260409091200154909450612822906001600160a01b03166129e2565b15612861576000878152600260208190526040909120015461285e90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b92505b60008781526002602052604090206008015461288c90670de0b6b3a764000090611975908790612a7f565b9150611a308361289c8685612a60565b90612a60565b600081815260026020526040902054819061010090046001600160a01b031633146128df5760405162461bcd60e51b815260040161061890612e59565b6000828152600260208190526040808320600781018054949055918201549154905163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561294d57600080fd5b505af1158015612961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129859190612c57565b5060008381526002602081815260409283902091820154915492518481526001600160a01b039283169361010090049092169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691016110ae565b60008054604051637c0aa57760e11b81526001600160a01b0384811660048301529091169063f8154aee9060240160206040518083038186803b158015612a2857600080fd5b505afa158015612a3c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190612d37565b6000612a6c8284612ffc565b9392505050565b6000612a6c8284613140565b6000612a6c8284613121565b6000612a6c8284613014565b80356001600160a01b038116811461227857600080fd5b600082601f830112612abf57600080fd5b81356020612ad4612acf83612fd8565b612fa7565b80838252828201915082860187848660051b8901011115612af457600080fd5b60005b85811015612b1357813584529284019290840190600101612af7565b5090979650505050505050565b600060208284031215612b3257600080fd5b612a6c82612a97565b600080600060608486031215612b5057600080fd5b612b5984612a97565b9250612b6760208501612a97565b9150612b7560408501612a97565b90509250925092565b600080600060608486031215612b9357600080fd5b612b9c84612a97565b925060208085013567ffffffffffffffff80821115612bba57600080fd5b818701915087601f830112612bce57600080fd5b8135612bdc612acf82612fd8565b8082825285820191508585018b878560051b8801011115612bfc57600080fd5b600095505b83861015612c2657612c1281612a97565b835260019590950194918601918601612c01565b50965050506040870135925080831115612c3f57600080fd5b5050612c4d86828701612aae565b9150509250925092565b600060208284031215612c6957600080fd5b8151612a6c81613199565b600060208284031215612c8657600080fd5b5035919050565b60008060408385031215612ca057600080fd5b82359150612cb060208401612a97565b90509250929050565b60008060408385031215612ccc57600080fd5b823591506020830135612cde81613199565b809150509250929050565b60008060408385031215612cfc57600080fd5b50508035926020909101359150565b600080600060608486031215612d2057600080fd5b505081359360208301359350604090920135919050565b600060208284031215612d4957600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612dac57835183529284019291840191600101612d90565b50909695505050505050565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652062617365546f6b656e20636f6e7472616374606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652064617461546f6b656e20636f6e7472616374606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a207a65726f206461746120746f6b604082015268195b88185b5bdd5b9d60ba1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fd057612fd0613183565b604052919050565b600067ffffffffffffffff821115612ff257612ff2613183565b5060051b60200190565b6000821982111561300f5761300f613157565b500190565b60008261303157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561307157816000190482111561305757613057613157565b8085161561306457918102915b93841c939080029061303b565b509250929050565b6000612a6c838360008261308f57506001612623565b8161309c57506000612623565b81600181146130b257600281146130bc576130d8565b6001915050612623565b60ff8411156130cd576130cd613157565b50506001821b612623565b5060208310610133831016604e8410600b84101617156130fb575081810a612623565b6131058383613036565b806000190482111561311957613119613157565b029392505050565b600081600019048311821515161561313b5761313b613157565b500290565b60008282101561315257613152613157565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146131a757600080fd5b5056fea2646970667358221220ce5268baa624f044ea145410a459d6d1e6ca8dbfb90eb82914fc12914514595664736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063825b5cd6116100f9578063b686bcaf11610097578063c99733a711610071578063c99733a714610575578063f532129e14610588578063f8154aee1461059b578063f887ea40146105ae57600080fd5b8063b686bcaf1461053c578063c1f6572e1461054f578063c66274ea1461056257600080fd5b806388823872116100d357806388823872146104eb578063a28f78f1146104fe578063b32b56f914610511578063b42414291461053457600080fd5b8063825b5cd6146103c5578063855058dd146103d857806385fcbc2f146104d857600080fd5b80635c36901c116101665780636e4c6269116101405780636e4c62691461035957806371dc14b21461036c57806379dd28361461039f5780637c82ebe9146103b257600080fd5b80635c36901c1461030057806360311e9514610333578063680819eb1461034657600080fd5b806324cb477e116101a257806324cb477e14610247578063450dccc31461025c5780634c87087d1461026f5780635acfedc7146102ed57600080fd5b8063012c3275146101c95780630b3b430d146101ef5780631e2e3a6b14610232575b600080fd5b6101dc6101d7366004612b7e565b6105c1565b6040519081526020015b60405180910390f35b6102026101fd366004612c74565b610d31565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101e6565b61023a610e3b565b6040516101e69190612d74565b61025a610255366004612c74565b610e93565b005b61025a61026a366004612c74565b610f72565b61028261027d366004612c74565b6110bb565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101e6565b61025a6102fb366004612c74565b6111e4565b61032361030e366004612c74565b60009081526002602052604090205460ff1690565b60405190151581526020016101e6565b61025a610341366004612c8d565b6112e0565b61025a610354366004612ce9565b611382565b61025a610367366004612d0b565b61146f565b61037f61037a366004612ce9565b6118cd565b6040805194855260208501939093529183015260608201526080016101e6565b61025a6103ad366004612cb9565b611a3c565b61025a6103c0366004612c8d565b611ace565b61025a6103d3366004612d0b565b611b61565b6104c06103e6366004612c74565b60009081526002602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652938201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6040516001600160a01b0390911681526020016101e6565b6101dc6104e6366004612c74565b6120d6565b61025a6104f9366004612ce9565b61227d565b6001546104c0906001600160a01b031681565b6101dc61051f366004612c74565b60009081526002602052604090206003015490565b6003546101dc565b61025a61054a366004612c74565b6122f4565b6101dc61055d366004612b3b565b6123eb565b6101dc610570366004612c74565b612436565b61037f610583366004612ce9565b61279e565b61025a610596366004612c74565b6128a2565b6101dc6105a9366004612b20565b6129e2565b6000546104c0906001600160a01b031681565b600080546001600160a01b031633146106215760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061063f5761063f61316d565b60200260200101516001600160a01b031614156106ba5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b6001600160a01b03841661072c5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b836001600160a01b0316836000815181106107495761074961316d565b60200260200101516001600160a01b031614156107ce5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365746f6b656e0000000000000000006064820152608401610618565b816002815181106107e1576107e161316d565b6020026020010151600014156108505760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610618565b61088f836000815181106108665761086661316d565b602002602001015185856001815181106108825761088261316d565b60200260200101516123eb565b600081815260026020526040902060030154909150156109055760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610618565b6000600190508260048151811061091e5761091e61316d565b602002602001015160001415610932575060005b604051806101e001604052806001151581526020018560018151811061095a5761095a61316d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109925761099261316d565b60200260200101516001600160a01b03168152602001846002815181106109bb576109bb61316d565b60200260200101518152602001846001815181106109db576109db61316d565b60200260200101518152602001846000815181106109fb576109fb61316d565b60200260200101518152602001600081526020016000815260200184600381518110610a2957610a2961316d565b6020026020010151815260200185600281518110610a4957610a4961316d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610a8857610a8861316d565b6020908102919091018101516001600160a01b0390811690925260008581526002808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a01519584018054968a1696831696909617909555608089015160038085019190915560a08a0151600485015560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9092018490558551908716918691610bf457610bf461316d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c3a57610c3a61316d565b602002602001015187600281518110610c5557610c5561316d565b6020026020010151604051610c7f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610c9a57610c9a61316d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610ceb57610ceb61316d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260026020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095528387015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e1f906129e2565b9350806101600151925080610180015191505091939590929450565b60606003805480602002602001604051908101604052809291908181526020018280548015610e8957602002820191906000526020600020905b815481526020019060010190808311610e75575b5050505050905090565b600081815260026020526040902054819061010090046001600160a01b03163314610ed05760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604090205460ff1615610f2b57600082815260026020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260026020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260026020526040902054819061010090046001600160a01b03163314610faf5760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604080822060068101805493905560018101549054915163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052169063a9059cbb90604401602060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110549190612c57565b506000838152600260209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a4505050565b600081815260026020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905297850154881660608501819052600386015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548c16610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a0880152949093049098166101c08501529597949691959194909281908190819081906111b08e612436565b95506111bb8e6120d6565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b6000818152600260208190526040808320600b8101805494905590910154600154915163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561124e57600080fd5b505af1158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a35050565b600082815260026020526040902054829061010090046001600160a01b0316331461131d5760405162461bcd60e51b815260040161061890612e59565b600083815260026020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260026020526040902054829061010090046001600160a01b031633146113bf5760405162461bcd60e51b815260040161061890612e59565b816114185760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610618565b6000838152600260205260409081902060030183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114629086815260200190565b60405180910390a3505050565b600083815260026020526040902054839060ff1615156001146114a45760405162461bcd60e51b815260040161061890612e0e565b826114c15760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611524576000848152600260205260409020600c015461010090046001600160a01b031633146115245760405162461bcd60e51b815260040161061890612db8565b60008060008061153488886118cd565b93509350935093508584101561159b5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610618565b6000888152600260205260409020600b01546115b79083612a60565b6000898152600260205260409020600b810191909155600a01546115db9082612a60565b60008981526002602052604090819020600a81019290925560019091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd9061162990339030908c90600401612d50565b602060405180830381600087803b15801561164357600080fd5b505af1158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190612c57565b6116975760405162461bcd60e51b815260040161061890612f00565b6000888152600260205260409020600601546116b39088612a60565b60008981526002602052604090206006810191909155600701548411156117955760008881526002602081905260409182902090810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd9261172292610100909204169033908990600401612d50565b602060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117749190612c57565b6117905760405162461bcd60e51b815260040161061890612ea2565b611852565b6000888152600260205260409020600701546117b19084612a73565b60008981526002602081905260409182902060078101939093559190910154905163a9059cbb60e01b8152336004820152602481018690526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190612c57565b505b6000888152600260208181526040928390209091015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a35050505050505050565b600082815260026020526040812054819081908190869060ff1615156001146119085760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546119819061192990600a613079565b6000898152600260205260409020600501546119759061194a90600a613079565b60008b81526002602052604090206003015461197b90670de0b6b3a764000090611975908d90612a7f565b90612a8b565b90612a7f565b600088815260026020819052604090912001549094506119a9906001600160a01b03166129e2565b156119ef57600087815260026020819052604090912001546119ec90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b8790612a7f565b92505b600087815260026020526040902060080154611a1a90670de0b6b3a764000090611975908790612a7f565b9150611a3083611a2a8685612a73565b90612a73565b94505092959194509250565b600082815260026020526040902054829061010090046001600160a01b03163314611a795760405162461bcd60e51b815260040161061890612e59565b600083815260026020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611462565b6000828152600260205260409020600901546001600160a01b03163314611b305760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260026020526040902054839060ff161515600114611b965760405162461bcd60e51b815260040161061890612e0e565b82611bb35760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611c16576000848152600260205260409020600c015461010090046001600160a01b03163314611c165760405162461bcd60e51b815260040161061890612db8565b600080600080611c26888861279e565b935093509350935085841115611c8e5760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610618565b6000888152600260205260409020600b0154611caa9083612a60565b6000898152600260205260409020600b810191909155600a0154611cce9082612a60565b600089815260026020819052604091829020600a810193909355919091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd90611d1d90339030908990600401612d50565b602060405180830381600087803b158015611d3757600080fd5b505af1158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190612c57565b611d8b5760405162461bcd60e51b815260040161061890612ea2565b600088815260026020526040902060070154611da79084612a60565b6000898152600260205260409020600781019190915560060154871115611fad576000888152600260205260409020600c015460ff168015611e6f5750600088815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b158015611e3757600080fd5b505afa158015611e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6f9190612c57565b15611eed57600088815260026020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611ed057600080fd5b505af1158015611ee4573d6000803e3d6000fd5b50505050612069565b600088815260026020526040908190206001810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd92611f3a92610100909204169033908c90600401612d50565b602060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190612c57565b611fa85760405162461bcd60e51b815260040161061890612f00565b612069565b600088815260026020526040902060060154611fc99088612a73565b600089815260026020526040908190206006810192909255600190910154905163a9059cbb60e01b8152336004820152602481018990526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120679190612c57565b505b6000888152600260209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016118bb565b60008181526002602052604081205460ff166120f457506000919050565b600082815260026020819052604080832091820154915490516370a0823160e01b81526001600160a01b03610100909204821660048201529116906370a082319060240160206040518083038186803b15801561215057600080fd5b505afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190612d37565b60008481526002602081905260408083209182015491549051636eb1769f60e11b81526101009091046001600160a01b0390811660048301523060248301529394509192169063dd62ed3e9060440160206040518083038186803b1580156121ef57600080fd5b505afa158015612203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122279190612d37565b9050808210156122555760008481526002602052604090206007015461224e908390612a60565b9250612275565b600084815260026020526040902060070154612272908290612a60565b92505b50505b919050565b6000828152600260205260409020600901546001600160a01b031633146122df5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060080155565b6000818152600260208190526040808320600a8101805494905591820154600990920154905163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d6407905591016112d4565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090509392505050565b60008181526002602052604081205460ff1661245457506000919050565b6000828152600260205260409020600c015460ff16151560011480156125005750600082815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b1580156124c857600080fd5b505afa1580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612c57565b15612629576000828152600260209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd926004808301939192829003018186803b15801561255757600080fd5b505afa15801561256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258f9190612d37565b600083815260026020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea926004808301939192829003018186803b1580156125e157600080fd5b505afa1580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126199190612d37565b6126239190613140565b92915050565b6000828152600260205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a082319060240160206040518083038186803b15801561268457600080fd5b505afa158015612698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bc9190612d37565b600084815260026020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e9060440160206040518083038186803b15801561272257600080fd5b505afa158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a9190612d37565b9050808210156127815760008481526002602052604090206006015461224e908390612a60565b600084815260026020526040902060060154612272908290612a60565b600082815260026020526040812054819081908190869060ff1615156001146127d95760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546127fa9061192990600a613079565b60008881526002602081905260409091200154909450612822906001600160a01b03166129e2565b15612861576000878152600260208190526040909120015461285e90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b92505b60008781526002602052604090206008015461288c90670de0b6b3a764000090611975908790612a7f565b9150611a308361289c8685612a60565b90612a60565b600081815260026020526040902054819061010090046001600160a01b031633146128df5760405162461bcd60e51b815260040161061890612e59565b6000828152600260208190526040808320600781018054949055918201549154905163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561294d57600080fd5b505af1158015612961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129859190612c57565b5060008381526002602081815260409283902091820154915492518481526001600160a01b039283169361010090049092169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691016110ae565b60008054604051637c0aa57760e11b81526001600160a01b0384811660048301529091169063f8154aee9060240160206040518083038186803b158015612a2857600080fd5b505afa158015612a3c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190612d37565b6000612a6c8284612ffc565b9392505050565b6000612a6c8284613140565b6000612a6c8284613121565b6000612a6c8284613014565b80356001600160a01b038116811461227857600080fd5b600082601f830112612abf57600080fd5b81356020612ad4612acf83612fd8565b612fa7565b80838252828201915082860187848660051b8901011115612af457600080fd5b60005b85811015612b1357813584529284019290840190600101612af7565b5090979650505050505050565b600060208284031215612b3257600080fd5b612a6c82612a97565b600080600060608486031215612b5057600080fd5b612b5984612a97565b9250612b6760208501612a97565b9150612b7560408501612a97565b90509250925092565b600080600060608486031215612b9357600080fd5b612b9c84612a97565b925060208085013567ffffffffffffffff80821115612bba57600080fd5b818701915087601f830112612bce57600080fd5b8135612bdc612acf82612fd8565b8082825285820191508585018b878560051b8801011115612bfc57600080fd5b600095505b83861015612c2657612c1281612a97565b835260019590950194918601918601612c01565b50965050506040870135925080831115612c3f57600080fd5b5050612c4d86828701612aae565b9150509250925092565b600060208284031215612c6957600080fd5b8151612a6c81613199565b600060208284031215612c8657600080fd5b5035919050565b60008060408385031215612ca057600080fd5b82359150612cb060208401612a97565b90509250929050565b60008060408385031215612ccc57600080fd5b823591506020830135612cde81613199565b809150509250929050565b60008060408385031215612cfc57600080fd5b50508035926020909101359150565b600080600060608486031215612d2057600080fd5b505081359360208301359350604090920135919050565b600060208284031215612d4957600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612dac57835183529284019291840191600101612d90565b50909695505050505050565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652062617365546f6b656e20636f6e7472616374606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652064617461546f6b656e20636f6e7472616374606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a207a65726f206461746120746f6b604082015268195b88185b5bdd5b9d60ba1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fd057612fd0613183565b604052919050565b600067ffffffffffffffff821115612ff257612ff2613183565b5060051b60200190565b6000821982111561300f5761300f613157565b500190565b60008261303157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561307157816000190482111561305757613057613157565b8085161561306457918102915b93841c939080029061303b565b509250929050565b6000612a6c838360008261308f57506001612623565b8161309c57506000612623565b81600181146130b257600281146130bc576130d8565b6001915050612623565b60ff8411156130cd576130cd613157565b50506001821b612623565b5060208310610133831016604e8410600b84101617156130fb575081810a612623565b6131058383613036565b806000190482111561311957613119613157565b029392505050565b600081600019048311821515161561313b5761313b613157565b500290565b60008282101561315257613152613157565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146131a757600080fd5b5056fea2646970667358221220ce5268baa624f044ea145410a459d6d1e6ca8dbfb90eb82914fc12914514595664736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} - } \ No newline at end of file + "_format": "hh-sol-artifact-1", + "contractName": "FixedRateExchange", + "sourceName": "contracts/pools/fixedRate/FixedRateExchange.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + }, + { + "internalType": "address", + "name": "_opcCollector", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + } + ], + "name": "ExchangeActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "ExchangeAllowedSwapperChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fixedRate", + "type": "uint256" + } + ], + "name": "ExchangeCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + } + ], + "name": "ExchangeDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "name": "ExchangeMintStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + } + ], + "name": "ExchangeRateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "feeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + } + ], + "name": "MarketFeeCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "feeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + } + ], + "name": "OceanFeeCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "by", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseTokenSwappedAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "datatokenSwappedAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenOutAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenCollected", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "datatokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBaseTokenAmount", + "type": "uint256" + } + ], + "name": "buyDT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "datatokenAmount", + "type": "uint256" + } + ], + "name": "calcBaseInGivenOutDT", + "outputs": [ + { + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseTokenAmountBeforeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "datatokenAmount", + "type": "uint256" + } + ], + "name": "calcBaseOutGivenInDT", + "outputs": [ + { + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseTokenAmountBeforeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectBT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectDT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectOceanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + } + ], + "name": "createWithDecimals", + "outputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + } + ], + "name": "generateExchangeId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getAllowedSwapper", + "outputs": [ + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getBTSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getDTSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getExchange", + "outputs": [ + { + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "dtDecimals", + "type": "uint256" + }, + { + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "btDecimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fixedRate", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "dtSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "btSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dtBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "btBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getExchanges", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getFeesInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "marketFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "marketFeeCollector", + "type": "address" + }, + { + "internalType": "uint256", + "name": "opcFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "marketFeeAvailable", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oceanFeeAvailable", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfExchanges", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "baseTokenAddress", + "type": "address" + } + ], + "name": "getOPCFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "isActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opcCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "datatokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBaseTokenAmount", + "type": "uint256" + } + ], + "name": "sellDT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAllowedSwapper", + "type": "address" + } + ], + "name": "setAllowedSwapper", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + } + ], + "name": "setRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "toggleExchangeState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "name": "toggleMintState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_newMarketFee", + "type": "uint256" + } + ], + "name": "updateMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_newMarketCollector", + "type": "address" + } + ], + "name": "updateMarketFeeCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620031b9380380620031b9833981016040819052620000349162000158565b60016000556001600160a01b038216620000a55760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6001600160a01b038116620001095760405162461bcd60e51b8152602060048201526024808201527f46697865645261746545786368616e67653a2057726f6e67204f5043206164646044820152637265737360e01b60648201526084016200009c565b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905562000190565b80516001600160a01b03811681146200015357600080fd5b919050565b600080604083850312156200016c57600080fd5b62000177836200013b565b915062000187602084016200013b565b90509250929050565b61301980620001a06000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379dd283611610104578063b4241429116100a2578063c66274ea11610071578063c66274ea14610590578063c99733a7146105a3578063f532129e146105b6578063f887ea40146105c957600080fd5b8063b42414291461054f578063b686bcaf14610557578063b8421e2b1461056a578063c1f6572e1461057d57600080fd5b8063855058dd116100de578063855058dd1461041d57806385fcbc2f146105055780638882387214610518578063b32b56f91461052b57600080fd5b806379dd2836146103e45780637c82ebe9146103f7578063825b5cd61461040a57600080fd5b80635acfedc71161017157806360311e951161014b57806360311e9514610378578063680819eb1461038b5780636e4c62691461039e57806371dc14b2146103b157600080fd5b80635acfedc7146103235780635c36901c146103365780635d1ca6311461036957600080fd5b80631e2e3a6b116101ad5780631e2e3a6b1461026857806324cb477e1461027d578063450dccc3146102925780634c87087d146102a557600080fd5b8063012c3275146101d457806303814238146101fa5780630b3b430d14610225575b600080fd5b6101e76101e23660046129f5565b6105dc565b6040519081526020015b60405180910390f35b60025461020d906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b610238610233366004612ac7565b610d51565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101f1565b610270610e5b565b6040516101f19190612ae0565b61029061028b366004612ac7565b610eb3565b005b6102906102a0366004612ac7565b610f92565b6102b86102b3366004612ac7565b61109e565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101f1565b610290610331366004612ac7565b6111c5565b610359610344366004612ac7565b60009081526003602052604090205460ff1690565b60405190151581526020016101f1565b604051600181526020016101f1565b610290610386366004612b24565b611280565b610290610399366004612b50565b611322565b6102906103ac366004612b72565b61140f565b6103c46103bf366004612b50565b61170d565b6040805194855260208501939093529183015260608201526080016101f1565b6102906103f2366004612baf565b611854565b610290610405366004612b24565b6118e6565b610290610418366004612b72565b611979565b61020d61042b366004612ac7565b60009081526003602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652600283015484166060830152938201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6101e7610513366004612ac7565b611d7b565b610290610526366004612b50565b611f02565b6101e7610539366004612ac7565b6000908152600360208190526040909120015490565b6004546101e7565b610290610565366004612ac7565b611f79565b6101e7610578366004612bdf565b61202a565b6101e761058b366004612bfa565b61209f565b6101e761059e366004612ac7565b6120eb565b6103c46105b1366004612b50565b6123fd565b6102906105c4366004612ac7565b6124ec565b60015461020d906001600160a01b031681565b6001546000906001600160a01b0316331461063e5760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061065c5761065c612c3d565b60200260200101516001600160a01b031614156106d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b6001600160a01b0384166107495760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b836001600160a01b03168360008151811061076657610766612c3d565b60200260200101516001600160a01b031614156107eb5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610635565b816002815181106107fe576107fe612c3d565b60200260200101516000141561086d5760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610635565b6108ac8360008151811061088357610883612c3d565b6020026020010151858560018151811061089f5761089f612c3d565b602002602001015161209f565b60008181526003602081905260409091200154909150156109235760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610635565b6000600190508260048151811061093c5761093c612c3d565b602002602001015160001415610950575060005b604051806101e001604052806001151581526020018560018151811061097857610978612c3d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109b0576109b0612c3d565b60200260200101516001600160a01b03168152602001846002815181106109d9576109d9612c3d565b60200260200101518152602001846001815181106109f9576109f9612c3d565b6020026020010151815260200184600081518110610a1957610a19612c3d565b60200260200101518152602001600081526020016000815260200184600381518110610a4757610a47612c3d565b6020026020010151815260200185600281518110610a6757610a67612c3d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610aa657610aa6612c3d565b6020908102919091018101516001600160a01b0390811690925260008581526003808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a0151600285018054918b1691841691909117905560808a01519584019590955560a089015160048085019190915560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9092018490558551908716918691610c1457610c14612c3d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c5a57610c5a612c3d565b602002602001015187600281518110610c7557610c75612c3d565b6020026020010151604051610c9f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610cba57610cba612c3d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610d0b57610d0b612c3d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260036020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095526002840154851660608401819052848801546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e3f9061202a565b9350806101600151925080610180015191505091939590929450565b60606004805480602002602001604051908101604052809291908181526020018280548015610ea957602002820191906000526020600020905b815481526020019060010190808311610e95575b5050505050905090565b600081815260036020526040902054819061010090046001600160a01b03163314610ef05760405162461bcd60e51b815260040161063590612c53565b60008281526003602052604090205460ff1615610f4b57600082815260036020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260036020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260036020526040902054819061010090046001600160a01b03163314610fcf5760405162461bcd60e51b815260040161063590612c53565b60026000541415610ff25760405162461bcd60e51b815260040161063590612c9c565b600260009081558281526003602052604081206006810180549290558054600190910154611033916001600160a01b039182169161010090910416836125e8565b6000838152600360209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a45050600160005550565b600081815260036020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905260028601548116606086018190529886015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548416610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a088015294909304166101c08501529597949691959194909281908190819081906111918e6120eb565b955061119c8e611d7b565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b600260005414156111e85760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600b8101805492905582549201549091611222916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a350506001600055565b600082815260036020526040902054829061010090046001600160a01b031633146112bd5760405162461bcd60e51b815260040161063590612c53565b600083815260036020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260036020526040902054829061010090046001600160a01b0316331461135f5760405162461bcd60e51b815260040161063590612c53565b816113b85760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610635565b6000838152600360208190526040918290200183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114029086815260200190565b60405180910390a3505050565b600083815260036020526040902054839060ff1661143f5760405162461bcd60e51b815260040161063590612cd3565b600260005414156114625760405162461bcd60e51b815260040161063590612c9c565b6002600055826114845760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b0316156114e7576000848152600360205260409020600c015461010090046001600160a01b031633146114e75760405162461bcd60e51b815260040161063590612d66565b6000806000806114f7888861170d565b93509350935093508584101561155e5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610635565b6000888152600360205260409020600b015461157a9083612650565b6000898152600360205260409020600b810191909155600a015461159e9082612650565b6000898152600360205260409020600a810191909155600101546115cd906001600160a01b031633308a61265c565b6000888152600360205260409020600601546115e99088612650565b6000898152600360205260409020600681019190915560070154841115611643576000888152600360205260409020805460029091015461163e916001600160a01b039182169161010090910416338761265c565b61168d565b60008881526003602052604090206007015461165f908461269a565b600089815260036020526040902060078101919091556002015461168d906001600160a01b031633866125e8565b6000888152600360209081526040918290206002015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a350506001600055505050505050565b600082815260036020526040812054819081908190869060ff166117435760405162461bcd60e51b815260040161063590612cd3565b6000878152600360205260409020600401546117bd90670de0b6b3a7640000906117b79061177290600a612eb6565b60008b8152600360205260409020600501546117b79061179390600a612eb6565b60008d815260036020819052604090912001546117b1908d906126a6565b906126a6565b906126b2565b600088815260036020526040812060020154919550906117e5906001600160a01b031661202a565b9050801561180657611803670de0b6b3a76400006117b787846126a6565b93505b60008881526003602052604090206008015461183190670de0b6b3a7640000906117b79088906126a6565b925061184784611841878661269a565b9061269a565b9550505092959194509250565b600082815260036020526040902054829061010090046001600160a01b031633146118915760405162461bcd60e51b815260040161063590612c53565b600083815260036020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611402565b6000828152600360205260409020600901546001600160a01b031633146119485760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260036020526040902054839060ff166119a95760405162461bcd60e51b815260040161063590612cd3565b600260005414156119cc5760405162461bcd60e51b815260040161063590612c9c565b6002600055826119ee5760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b031615611a51576000848152600360205260409020600c015461010090046001600160a01b03163314611a515760405162461bcd60e51b815260040161063590612d66565b600080600080611a6188886123fd565b935093509350935085841115611ac95760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610635565b6000888152600360205260409020600b0154611ae59083612650565b6000898152600360205260409020600b810191909155600a0154611b099082612650565b6000898152600360205260409020600a81019190915560020154611b38906001600160a01b031633308761265c565b600088815260036020526040902060070154611b549084612650565b6000898152600360205260409020600781019190915560060154871115611cc4576000888152600360205260409020600c015460ff168015611c0d5750600088815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190612ec2565b15611c8b57600088815260036020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b50505050611d0e565b60008881526003602052604090208054600190910154611cbf916001600160a01b039182169161010090910416338a61265c565b611d0e565b600088815260036020526040902060060154611ce0908861269a565b6000898152600360205260409020600681019190915560010154611d0e906001600160a01b031633896125e8565b6000888152600360209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016116f6565b60008181526003602052604081205460ff16611d9957506000919050565b6000828152600360205260408082206002810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015611df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1d9190612edf565b600084815260036020526040808220600281015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190612edf565b905080821015611eda57600084815260036020526040902060070154611ed3908390612650565b9250611efa565b600084815260036020526040902060070154611ef7908290612650565b92505b50505b919050565b6000828152600360205260409020600901546001600160a01b03163314611f645760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060080155565b60026000541415611f9c5760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600a8101805492905560098101549201549091611fd9916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910161126f565b60015460405163b8421e2b60e01b81526001600160a01b038381166004830152600092169063b8421e2b90602401602060405180830381865afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120999190612edf565b92915050565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090505b9392505050565b60008181526003602052604081205460ff1661210957506000919050565b6000828152600360205260409020600c015460ff1680156121a15750600082815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190612ec2565b156122a6576000828152600360209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa1580156121fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122219190612edf565b600083815260036020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015612278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229c9190612edf565b6120999190612ef8565b6000828152600360205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015612306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232a9190612edf565b600084815260036020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b99190612edf565b9050808210156123e057600084815260036020526040902060060154611ed3908390612650565b600084815260036020526040902060060154611ef7908290612650565b600082815260036020526040812054819081908190869060ff166124335760405162461bcd60e51b815260040161063590612cd3565b60008781526003602052604090206004015461246290670de0b6b3a7640000906117b79061177290600a612eb6565b6000888152600360205260408120600201549195509061248a906001600160a01b031661202a565b905080156124ab576124a8670de0b6b3a76400006117b787846126a6565b93505b6000888152600360205260409020600801546124d690670de0b6b3a7640000906117b79088906126a6565b9250611847846124e68786612650565b90612650565b600081815260036020526040902054819061010090046001600160a01b031633146125295760405162461bcd60e51b815260040161063590612c53565b6002600054141561254c5760405162461bcd60e51b815260040161063590612c9c565b600260008181558381526003602052604081206007810180549290558054920154909161258b916001600160a01b0390811691610100900416836125e8565b6000838152600360209081526040918290206002810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910161108c565b6040516001600160a01b03831660248201526044810182905261264b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526126be565b505050565b60006120e48284612f0f565b6040516001600160a01b03808516602483015283166044820152606481018290526126949085906323b872dd60e01b90608401612614565b50505050565b60006120e48284612ef8565b60006120e48284612f27565b60006120e48284612f46565b6000612713826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127909092919063ffffffff16565b80519091501561264b57808060200190518101906127319190612ec2565b61264b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610635565b606061279f84846000856127a7565b949350505050565b6060824710156128085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610635565b843b6128565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610635565b600080866001600160a01b031685876040516128729190612f94565b60006040518083038185875af1925050503d80600081146128af576040519150601f19603f3d011682016040523d82523d6000602084013e6128b4565b606091505b50915091506128c48282866128cf565b979650505050505050565b606083156128de5750816120e4565b8251156128ee5782518084602001fd5b8160405162461bcd60e51b81526004016106359190612fb0565b80356001600160a01b0381168114611efd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561295e5761295e61291f565b604052919050565b600067ffffffffffffffff8211156129805761298061291f565b5060051b60200190565b600082601f83011261299b57600080fd5b813560206129b06129ab83612966565b612935565b82815260059290921b840181019181810190868411156129cf57600080fd5b8286015b848110156129ea57803583529183019183016129d3565b509695505050505050565b600080600060608486031215612a0a57600080fd5b612a1384612908565b925060208085013567ffffffffffffffff80821115612a3157600080fd5b818701915087601f830112612a4557600080fd5b8135612a536129ab82612966565b81815260059190911b8301840190848101908a831115612a7257600080fd5b938501935b82851015612a9757612a8885612908565b82529385019390850190612a77565b965050506040870135925080831115612aaf57600080fd5b5050612abd8682870161298a565b9150509250925092565b600060208284031215612ad957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612b1857835183529284019291840191600101612afc565b50909695505050505050565b60008060408385031215612b3757600080fd5b82359150612b4760208401612908565b90509250929050565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b600080600060608486031215612b8757600080fd5b505081359360208301359350604090920135919050565b8015158114612bac57600080fd5b50565b60008060408385031215612bc257600080fd5b823591506020830135612bd481612b9e565b809150509250929050565b600060208284031215612bf157600080fd5b6120e482612908565b600080600060608486031215612c0f57600080fd5b612c1884612908565b9250612c2660208501612908565b9150612c3460408501612908565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526028908201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656040820152671b88185b5bdd5b9d60c21b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e0d578160001904821115612df357612df3612dbc565b80851615612e0057918102915b93841c9390800290612dd7565b509250929050565b600082612e2457506001612099565b81612e3157506000612099565b8160018114612e475760028114612e5157612e6d565b6001915050612099565b60ff841115612e6257612e62612dbc565b50506001821b612099565b5060208310610133831016604e8410600b8410161715612e90575081810a612099565b612e9a8383612dd2565b8060001904821115612eae57612eae612dbc565b029392505050565b60006120e48383612e15565b600060208284031215612ed457600080fd5b81516120e481612b9e565b600060208284031215612ef157600080fd5b5051919050565b600082821015612f0a57612f0a612dbc565b500390565b60008219821115612f2257612f22612dbc565b500190565b6000816000190483118215151615612f4157612f41612dbc565b500290565b600082612f6357634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015612f83578181015183820152602001612f6b565b838111156126945750506000910152565b60008251612fa6818460208701612f68565b9190910192915050565b6020815260008251806020840152612fcf816040850160208701612f68565b601f01601f1916919091016040019291505056fea26469706673582212207a39153979ea587416600b8146b451020b2f3248d1f1f05112a77e65cae3d03f64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379dd283611610104578063b4241429116100a2578063c66274ea11610071578063c66274ea14610590578063c99733a7146105a3578063f532129e146105b6578063f887ea40146105c957600080fd5b8063b42414291461054f578063b686bcaf14610557578063b8421e2b1461056a578063c1f6572e1461057d57600080fd5b8063855058dd116100de578063855058dd1461041d57806385fcbc2f146105055780638882387214610518578063b32b56f91461052b57600080fd5b806379dd2836146103e45780637c82ebe9146103f7578063825b5cd61461040a57600080fd5b80635acfedc71161017157806360311e951161014b57806360311e9514610378578063680819eb1461038b5780636e4c62691461039e57806371dc14b2146103b157600080fd5b80635acfedc7146103235780635c36901c146103365780635d1ca6311461036957600080fd5b80631e2e3a6b116101ad5780631e2e3a6b1461026857806324cb477e1461027d578063450dccc3146102925780634c87087d146102a557600080fd5b8063012c3275146101d457806303814238146101fa5780630b3b430d14610225575b600080fd5b6101e76101e23660046129f5565b6105dc565b6040519081526020015b60405180910390f35b60025461020d906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b610238610233366004612ac7565b610d51565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101f1565b610270610e5b565b6040516101f19190612ae0565b61029061028b366004612ac7565b610eb3565b005b6102906102a0366004612ac7565b610f92565b6102b86102b3366004612ac7565b61109e565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101f1565b610290610331366004612ac7565b6111c5565b610359610344366004612ac7565b60009081526003602052604090205460ff1690565b60405190151581526020016101f1565b604051600181526020016101f1565b610290610386366004612b24565b611280565b610290610399366004612b50565b611322565b6102906103ac366004612b72565b61140f565b6103c46103bf366004612b50565b61170d565b6040805194855260208501939093529183015260608201526080016101f1565b6102906103f2366004612baf565b611854565b610290610405366004612b24565b6118e6565b610290610418366004612b72565b611979565b61020d61042b366004612ac7565b60009081526003602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652600283015484166060830152938201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6101e7610513366004612ac7565b611d7b565b610290610526366004612b50565b611f02565b6101e7610539366004612ac7565b6000908152600360208190526040909120015490565b6004546101e7565b610290610565366004612ac7565b611f79565b6101e7610578366004612bdf565b61202a565b6101e761058b366004612bfa565b61209f565b6101e761059e366004612ac7565b6120eb565b6103c46105b1366004612b50565b6123fd565b6102906105c4366004612ac7565b6124ec565b60015461020d906001600160a01b031681565b6001546000906001600160a01b0316331461063e5760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061065c5761065c612c3d565b60200260200101516001600160a01b031614156106d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b6001600160a01b0384166107495760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b836001600160a01b03168360008151811061076657610766612c3d565b60200260200101516001600160a01b031614156107eb5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610635565b816002815181106107fe576107fe612c3d565b60200260200101516000141561086d5760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610635565b6108ac8360008151811061088357610883612c3d565b6020026020010151858560018151811061089f5761089f612c3d565b602002602001015161209f565b60008181526003602081905260409091200154909150156109235760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610635565b6000600190508260048151811061093c5761093c612c3d565b602002602001015160001415610950575060005b604051806101e001604052806001151581526020018560018151811061097857610978612c3d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109b0576109b0612c3d565b60200260200101516001600160a01b03168152602001846002815181106109d9576109d9612c3d565b60200260200101518152602001846001815181106109f9576109f9612c3d565b6020026020010151815260200184600081518110610a1957610a19612c3d565b60200260200101518152602001600081526020016000815260200184600381518110610a4757610a47612c3d565b6020026020010151815260200185600281518110610a6757610a67612c3d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610aa657610aa6612c3d565b6020908102919091018101516001600160a01b0390811690925260008581526003808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a0151600285018054918b1691841691909117905560808a01519584019590955560a089015160048085019190915560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9092018490558551908716918691610c1457610c14612c3d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c5a57610c5a612c3d565b602002602001015187600281518110610c7557610c75612c3d565b6020026020010151604051610c9f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610cba57610cba612c3d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610d0b57610d0b612c3d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260036020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095526002840154851660608401819052848801546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e3f9061202a565b9350806101600151925080610180015191505091939590929450565b60606004805480602002602001604051908101604052809291908181526020018280548015610ea957602002820191906000526020600020905b815481526020019060010190808311610e95575b5050505050905090565b600081815260036020526040902054819061010090046001600160a01b03163314610ef05760405162461bcd60e51b815260040161063590612c53565b60008281526003602052604090205460ff1615610f4b57600082815260036020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260036020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260036020526040902054819061010090046001600160a01b03163314610fcf5760405162461bcd60e51b815260040161063590612c53565b60026000541415610ff25760405162461bcd60e51b815260040161063590612c9c565b600260009081558281526003602052604081206006810180549290558054600190910154611033916001600160a01b039182169161010090910416836125e8565b6000838152600360209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a45050600160005550565b600081815260036020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905260028601548116606086018190529886015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548416610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a088015294909304166101c08501529597949691959194909281908190819081906111918e6120eb565b955061119c8e611d7b565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b600260005414156111e85760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600b8101805492905582549201549091611222916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a350506001600055565b600082815260036020526040902054829061010090046001600160a01b031633146112bd5760405162461bcd60e51b815260040161063590612c53565b600083815260036020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260036020526040902054829061010090046001600160a01b0316331461135f5760405162461bcd60e51b815260040161063590612c53565b816113b85760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610635565b6000838152600360208190526040918290200183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114029086815260200190565b60405180910390a3505050565b600083815260036020526040902054839060ff1661143f5760405162461bcd60e51b815260040161063590612cd3565b600260005414156114625760405162461bcd60e51b815260040161063590612c9c565b6002600055826114845760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b0316156114e7576000848152600360205260409020600c015461010090046001600160a01b031633146114e75760405162461bcd60e51b815260040161063590612d66565b6000806000806114f7888861170d565b93509350935093508584101561155e5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610635565b6000888152600360205260409020600b015461157a9083612650565b6000898152600360205260409020600b810191909155600a015461159e9082612650565b6000898152600360205260409020600a810191909155600101546115cd906001600160a01b031633308a61265c565b6000888152600360205260409020600601546115e99088612650565b6000898152600360205260409020600681019190915560070154841115611643576000888152600360205260409020805460029091015461163e916001600160a01b039182169161010090910416338761265c565b61168d565b60008881526003602052604090206007015461165f908461269a565b600089815260036020526040902060078101919091556002015461168d906001600160a01b031633866125e8565b6000888152600360209081526040918290206002015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a350506001600055505050505050565b600082815260036020526040812054819081908190869060ff166117435760405162461bcd60e51b815260040161063590612cd3565b6000878152600360205260409020600401546117bd90670de0b6b3a7640000906117b79061177290600a612eb6565b60008b8152600360205260409020600501546117b79061179390600a612eb6565b60008d815260036020819052604090912001546117b1908d906126a6565b906126a6565b906126b2565b600088815260036020526040812060020154919550906117e5906001600160a01b031661202a565b9050801561180657611803670de0b6b3a76400006117b787846126a6565b93505b60008881526003602052604090206008015461183190670de0b6b3a7640000906117b79088906126a6565b925061184784611841878661269a565b9061269a565b9550505092959194509250565b600082815260036020526040902054829061010090046001600160a01b031633146118915760405162461bcd60e51b815260040161063590612c53565b600083815260036020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611402565b6000828152600360205260409020600901546001600160a01b031633146119485760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260036020526040902054839060ff166119a95760405162461bcd60e51b815260040161063590612cd3565b600260005414156119cc5760405162461bcd60e51b815260040161063590612c9c565b6002600055826119ee5760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b031615611a51576000848152600360205260409020600c015461010090046001600160a01b03163314611a515760405162461bcd60e51b815260040161063590612d66565b600080600080611a6188886123fd565b935093509350935085841115611ac95760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610635565b6000888152600360205260409020600b0154611ae59083612650565b6000898152600360205260409020600b810191909155600a0154611b099082612650565b6000898152600360205260409020600a81019190915560020154611b38906001600160a01b031633308761265c565b600088815260036020526040902060070154611b549084612650565b6000898152600360205260409020600781019190915560060154871115611cc4576000888152600360205260409020600c015460ff168015611c0d5750600088815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190612ec2565b15611c8b57600088815260036020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b50505050611d0e565b60008881526003602052604090208054600190910154611cbf916001600160a01b039182169161010090910416338a61265c565b611d0e565b600088815260036020526040902060060154611ce0908861269a565b6000898152600360205260409020600681019190915560010154611d0e906001600160a01b031633896125e8565b6000888152600360209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016116f6565b60008181526003602052604081205460ff16611d9957506000919050565b6000828152600360205260408082206002810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015611df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1d9190612edf565b600084815260036020526040808220600281015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190612edf565b905080821015611eda57600084815260036020526040902060070154611ed3908390612650565b9250611efa565b600084815260036020526040902060070154611ef7908290612650565b92505b50505b919050565b6000828152600360205260409020600901546001600160a01b03163314611f645760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060080155565b60026000541415611f9c5760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600a8101805492905560098101549201549091611fd9916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910161126f565b60015460405163b8421e2b60e01b81526001600160a01b038381166004830152600092169063b8421e2b90602401602060405180830381865afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120999190612edf565b92915050565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090505b9392505050565b60008181526003602052604081205460ff1661210957506000919050565b6000828152600360205260409020600c015460ff1680156121a15750600082815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190612ec2565b156122a6576000828152600360209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa1580156121fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122219190612edf565b600083815260036020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015612278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229c9190612edf565b6120999190612ef8565b6000828152600360205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015612306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232a9190612edf565b600084815260036020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b99190612edf565b9050808210156123e057600084815260036020526040902060060154611ed3908390612650565b600084815260036020526040902060060154611ef7908290612650565b600082815260036020526040812054819081908190869060ff166124335760405162461bcd60e51b815260040161063590612cd3565b60008781526003602052604090206004015461246290670de0b6b3a7640000906117b79061177290600a612eb6565b6000888152600360205260408120600201549195509061248a906001600160a01b031661202a565b905080156124ab576124a8670de0b6b3a76400006117b787846126a6565b93505b6000888152600360205260409020600801546124d690670de0b6b3a7640000906117b79088906126a6565b9250611847846124e68786612650565b90612650565b600081815260036020526040902054819061010090046001600160a01b031633146125295760405162461bcd60e51b815260040161063590612c53565b6002600054141561254c5760405162461bcd60e51b815260040161063590612c9c565b600260008181558381526003602052604081206007810180549290558054920154909161258b916001600160a01b0390811691610100900416836125e8565b6000838152600360209081526040918290206002810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910161108c565b6040516001600160a01b03831660248201526044810182905261264b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526126be565b505050565b60006120e48284612f0f565b6040516001600160a01b03808516602483015283166044820152606481018290526126949085906323b872dd60e01b90608401612614565b50505050565b60006120e48284612ef8565b60006120e48284612f27565b60006120e48284612f46565b6000612713826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127909092919063ffffffff16565b80519091501561264b57808060200190518101906127319190612ec2565b61264b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610635565b606061279f84846000856127a7565b949350505050565b6060824710156128085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610635565b843b6128565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610635565b600080866001600160a01b031685876040516128729190612f94565b60006040518083038185875af1925050503d80600081146128af576040519150601f19603f3d011682016040523d82523d6000602084013e6128b4565b606091505b50915091506128c48282866128cf565b979650505050505050565b606083156128de5750816120e4565b8251156128ee5782518084602001fd5b8160405162461bcd60e51b81526004016106359190612fb0565b80356001600160a01b0381168114611efd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561295e5761295e61291f565b604052919050565b600067ffffffffffffffff8211156129805761298061291f565b5060051b60200190565b600082601f83011261299b57600080fd5b813560206129b06129ab83612966565b612935565b82815260059290921b840181019181810190868411156129cf57600080fd5b8286015b848110156129ea57803583529183019183016129d3565b509695505050505050565b600080600060608486031215612a0a57600080fd5b612a1384612908565b925060208085013567ffffffffffffffff80821115612a3157600080fd5b818701915087601f830112612a4557600080fd5b8135612a536129ab82612966565b81815260059190911b8301840190848101908a831115612a7257600080fd5b938501935b82851015612a9757612a8885612908565b82529385019390850190612a77565b965050506040870135925080831115612aaf57600080fd5b5050612abd8682870161298a565b9150509250925092565b600060208284031215612ad957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612b1857835183529284019291840191600101612afc565b50909695505050505050565b60008060408385031215612b3757600080fd5b82359150612b4760208401612908565b90509250929050565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b600080600060608486031215612b8757600080fd5b505081359360208301359350604090920135919050565b8015158114612bac57600080fd5b50565b60008060408385031215612bc257600080fd5b823591506020830135612bd481612b9e565b809150509250929050565b600060208284031215612bf157600080fd5b6120e482612908565b600080600060608486031215612c0f57600080fd5b612c1884612908565b9250612c2660208501612908565b9150612c3460408501612908565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526028908201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656040820152671b88185b5bdd5b9d60c21b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e0d578160001904821115612df357612df3612dbc565b80851615612e0057918102915b93841c9390800290612dd7565b509250929050565b600082612e2457506001612099565b81612e3157506000612099565b8160018114612e475760028114612e5157612e6d565b6001915050612099565b60ff841115612e6257612e62612dbc565b50506001821b612099565b5060208310610133831016604e8410600b8410161715612e90575081810a612099565b612e9a8383612dd2565b8060001904821115612eae57612eae612dbc565b029392505050565b60006120e48383612e15565b600060208284031215612ed457600080fd5b81516120e481612b9e565b600060208284031215612ef157600080fd5b5051919050565b600082821015612f0a57612f0a612dbc565b500390565b60008219821115612f2257612f22612dbc565b500190565b6000816000190483118215151615612f4157612f41612dbc565b500290565b600082612f6357634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015612f83578181015183820152602001612f6b565b838111156126945750506000910152565b60008251612fa6818460208701612f68565b9190910192915050565b6020815260008251806020840152612fcf816040850160208701612f68565b601f01601f1916919091016040019291505056fea26469706673582212207a39153979ea587416600b8146b451020b2f3248d1f1f05112a77e65cae3d03f64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/schema.graphql b/schema.graphql index fef8183..967325e 100644 --- a/schema.graphql +++ b/schema.graphql @@ -422,9 +422,12 @@ type GlobalStats @entity { type NftUpdate @entity { id: ID! # update tx + nft address - + tokenUri: String! nft: Nft! + "provider url that can decrypt the ddo" + providerUrl: String + "user that made the update" userAddress: String! diff --git a/src/mappings/erc20Templates.ts b/src/mappings/erc20Templates.ts index 51ad225..869d20a 100644 --- a/src/mappings/erc20Templates.ts +++ b/src/mappings/erc20Templates.ts @@ -1,6 +1,5 @@ import { Order } from '../@types/schema' import { - ConsumeMarketFees, NewPaymentCollector, OrderStarted, PublishMarketFees @@ -44,13 +43,13 @@ export function handleOrderStarted(event: OrderStarted): void { token.decimals ) - order.serviceId = event.params.serviceId.toI32() + order.serviceId = event.params.serviceIndex.toI32() const publishMarket = getUser(event.params.publishMarketAddress.toHex()) order.publishingMarket = publishMarket.id - const consumeMarket = getUser(event.params.consumeFeeMarketAddress.toHex()) - order.consumerMarket = consumeMarket.id + // const consumeMarket = getUser(event.params..toHex()) + // order.consumerMarket = consumeMarket.id order.createdTimestamp = event.block.timestamp.toI32() order.tx = event.transaction.hash.toHex() @@ -66,7 +65,6 @@ export function handleOrderStarted(event: OrderStarted): void { export function handleNewPaymentCollector(event: NewPaymentCollector): void {} export function handlePublishMarketFees(event: PublishMarketFees): void {} -export function handleConsumeMarketFees(event: ConsumeMarketFees): void {} // export function handlePublishMarketFees(event: PublishMarketFees): void { // const order = Order.load( diff --git a/src/mappings/erc721Factory.ts b/src/mappings/erc721Factory.ts index 715e34a..90e207f 100644 --- a/src/mappings/erc721Factory.ts +++ b/src/mappings/erc721Factory.ts @@ -1,3 +1,4 @@ +import { log } from '@graphprotocol/graph-ts' import { NFTCreated, TokenCreated } from '../@types/ERC721Factory/ERC721Factory' import { Nft, Token } from '../@types/schema' import { ERC20Template, ERC721Template } from '../@types/templates' @@ -7,13 +8,15 @@ import { getGlobalStats } from './utils/globalUtils' import { getUser } from './utils/userUtils' export function handleNftCreated(event: NFTCreated): void { + log.warning('nft handleNftCreated {}', [event.params.tokenURI.toString()]) const nft = new Nft(event.params.newTokenAddress.toHexString()) ERC721Template.create(event.params.newTokenAddress) const user = getUser(event.params.admin.toHexString()) nft.owner = user.id nft.address = event.params.newTokenAddress.toHexString() nft.name = event.params.tokenName - nft.symbol = '' + nft.symbol = event.params.symbol.toString() + nft.tokenUri = event.params.tokenURI.toString() nft.createdTimestamp = event.block.timestamp.toI32() nft.tx = event.transaction.hash.toHex() nft.block = event.block.number.toI32() diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index 2e954d1..6246a7a 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -19,22 +19,13 @@ import { getToken } from './utils/tokenUtils' import { getUser } from './utils/userUtils' export function handleExchangeCreated(event: ExchangeCreated): void { - log.warning( - 'handleExchangeCreated baseToken {} ; dataToken {} ; exchangeOwner {} ; fixedRate {}', - [ - event.params.baseToken.toHexString(), - event.params.dataToken.toHexString(), - event.params.exchangeOwner.toHexString(), - event.params.fixedRate.toBigDecimal().toString() - ] - ) const fixedRateExchange = new FixedRateExchange( event.params.exchangeId.toHexString() ) const user = getUser(event.params.exchangeOwner.toHexString()) fixedRateExchange.owner = user.id fixedRateExchange.datatoken = getToken( - event.params.dataToken.toHexString() + event.params.datatoken.toHexString() ).id fixedRateExchange.baseToken = getToken( event.params.baseToken.toHexString() @@ -177,7 +168,7 @@ export function handleSwap(event: Swapped): void { BigInt.fromI32(baseToken.decimals).toI32() ) swap.dataTokenAmount = weiToDecimal( - event.params.dataTokenSwappedAmount.toBigDecimal(), + event.params.datatokenSwappedAmount.toBigDecimal(), BigInt.fromI32(18).toI32() ) diff --git a/src/mappings/nftUpdate.ts b/src/mappings/nftUpdate.ts index 267e455..3043f35 100644 --- a/src/mappings/nftUpdate.ts +++ b/src/mappings/nftUpdate.ts @@ -13,13 +13,12 @@ function getId(tx: string, nftAddress: string): string { } export function handleCreated(event: MetadataCreated): void { - log.warning('nft handleCreated {}', [event.address.toHex()]) const nftAddress = event.address.toHex() const nft = Nft.load(nftAddress) if (!nft) return nft.assetState = event.params.state - + nft.providerUrl = event.params.decryptorUrl.toString() const nftUpdate = new NftUpdate( getId(event.transaction.hash.toHex(), nftAddress) ) @@ -28,6 +27,9 @@ export function handleCreated(event: MetadataCreated): void { nftUpdate.userAddress = event.params.createdBy.toHex() nftUpdate.assetState = event.params.state + nftUpdate.nft = nft.id + nftUpdate.providerUrl = nft.providerUrl + nftUpdate.timestamp = event.block.timestamp.toI32() nftUpdate.tx = event.transaction.hash.toHex() nftUpdate.block = event.block.number.toI32() @@ -88,7 +90,7 @@ export function handleTokenUriUpdate(event: TokenURIUpdate): void { if (!nft) return - nft.tokenUri = event.params.tokenURI + nft.tokenUri = event.params.tokenURI.toString() const nftUpdate = new NftUpdate( getId(event.transaction.hash.toHex(), nftAddress) @@ -96,7 +98,7 @@ export function handleTokenUriUpdate(event: TokenURIUpdate): void { nftUpdate.type = NftUpdateType.TOKENURI_UPDATED nftUpdate.userAddress = event.params.updatedBy.toHex() - + nftUpdate.tokenUri = nft.tokenUri nftUpdate.timestamp = event.block.timestamp.toI32() nftUpdate.tx = event.transaction.hash.toHex() nftUpdate.block = event.block.number.toI32() diff --git a/src/mappings/pool.ts b/src/mappings/pool.ts index 5598571..b7a4094 100644 --- a/src/mappings/pool.ts +++ b/src/mappings/pool.ts @@ -21,7 +21,6 @@ import { getUser } from './utils/userUtils' // kinda redundant code in join/swap/exit export function handleJoin(event: LOG_JOIN): void { - log.warning('handle join {}', [event.address.toHex()]) const pool = getPool(event.address.toHex()) const user = getUser(event.params.caller.toHex()) const poolTx = getPoolTransaction(event, user.id, PoolTransactionType.JOIN) @@ -36,10 +35,6 @@ export function handleJoin(event: LOG_JOIN): void { event.params.tokenAmountIn.toBigDecimal(), token.decimals ) - log.warning('handle join ammount {} tokenAmountIn {}', [ - ammount.toString(), - event.params.tokenAmountIn.toString() - ]) if (token.isDatatoken) { poolTx.datatoken = token.id poolTx.datatokenValue = ammount @@ -58,11 +53,6 @@ export function handleJoin(event: LOG_JOIN): void { pool.baseTokenLiquidity = pool.baseTokenLiquidity.plus(ammount) } - log.warning('handle join baseTokenLiquidity {} datatokenLiquidity {}', [ - pool.baseTokenLiquidity.toString(), - pool.datatokenLiquidity.toString() - ]) - poolSnapshot.save() poolTx.save() pool.save() @@ -181,7 +171,6 @@ export function handleSwap(event: LOG_SWAP): void { // setup is just to set token weight(it will mostly be 50:50) and spotPrice export function handleSetup(event: LOG_SETUP): void { - log.warning('new Pool from {} ', [event.transaction.from.toHexString()]) const pool = getPool(event.address.toHex()) pool.controller = event.params.caller.toHexString() @@ -193,10 +182,10 @@ export function handleSetup(event: LOG_SETUP): void { ) // decimals hardcoded because datatokens have 18 decimals - const datatoken = getToken(event.params.dataToken.toHex()) + const datatoken = getToken(event.params.datatoken.toHex()) pool.datatoken = datatoken.id pool.datatokenWeight = weiToDecimal( - event.params.dataTokenWeight.toBigDecimal(), + event.params.datatokenWeight.toBigDecimal(), 18 ) @@ -241,12 +230,6 @@ export function handlerBptTransfer(event: Transfer): void { poolAddress, event.block.timestamp.toI32() ) - log.warning('bpt transfer tx: {} from: {} | to {} | ammount {} ', [ - event.transaction.hash.toHex(), - fromAddress, - toAddress, - event.params.amt.toString() - ]) // btoken has 18 decimals const ammount = weiToDecimal(event.params.amt.toBigDecimal(), 18) diff --git a/subgraph.rinkeby.yaml b/subgraph.rinkeby.yaml index 07e802c..70e772b 100644 --- a/subgraph.rinkeby.yaml +++ b/subgraph.rinkeby.yaml @@ -8,9 +8,9 @@ dataSources: name: ERC721Factory network: rinkeby source: - address: '0x3405C797C132e3BC7BdD10A16b6394a2d71fE77a' + address: '0x65aCFbcf0576D5740d1a824afd1776E7D4034C3D' abi: ERC721Factory - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -30,9 +30,9 @@ dataSources: name: FixedRateExchange network: rinkeby source: - address: '0x5FfBfa9cbC9BC1D0366E3B558825ABfc2889FA8e' + address: '0x40F63Ec24aDc291d41F63fBA356Dd9983197c83a' abi: FixedRateExchange - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -64,9 +64,9 @@ dataSources: name: Dispenser network: rinkeby source: - address: '0x57f4A9C96f2c433B0eD2Dcf7A7460C90f555192F' + address: '0x5b18fbac5aA81B4a0CAF993afb69b2ADfC3E8833' abi: Dispenser - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -95,9 +95,9 @@ dataSources: name: FactoryRouter network: rinkeby source: - address: '0x9E70c93B69B0cFc784736d46D0C11F3c438DA587' + address: '0x5a31C7e57D51fc0991C1315c66587e7a158c9c40' abi: FactoryRouter - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -135,14 +135,12 @@ templates: - name: ERC20Roles file: ./abis/ERC20Roles.json eventHandlers: - - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,indexed address,uint256) + - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,uint256) handler: handleOrderStarted - event: NewPaymentCollector(indexed address,indexed address,uint256,uint256) handler: handleNewPaymentCollector - event: PublishMarketFees(indexed address,indexed address,uint256) handler: handlePublishMarketFees - - event: ConsumeMarketFees(indexed address,indexed address,uint256) - handler: handleConsumeMarketFees - name: BPool kind: ethereum/contract @@ -192,9 +190,9 @@ templates: - name: ERC721Template file: ./abis/ERC721Template.json eventHandlers: - - event: MetadataCreated(indexed address,uint8,string,bytes,bytes,bytes,uint256,uint256) + - event: MetadataCreated(indexed address,uint8,string,bytes,bytes,bytes32,uint256,uint256) handler: handleCreated - - event: MetadataUpdated(indexed address,uint8,string,bytes,bytes,bytes,uint256,uint256) + - event: MetadataUpdated(indexed address,uint8,string,bytes,bytes,bytes32,uint256,uint256) handler: handleUpdated - event: MetadataState(indexed address,uint8,uint256,uint256) handler: handleState diff --git a/subgraph.yaml b/subgraph.yaml index cadbded..70e772b 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -8,9 +8,9 @@ dataSources: name: ERC721Factory network: rinkeby source: - address: '0x15087E3E9eAAAb37d32d9D06Fa4000309BD7Ee6D' + address: '0x65aCFbcf0576D5740d1a824afd1776E7D4034C3D' abi: ERC721Factory - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -30,9 +30,9 @@ dataSources: name: FixedRateExchange network: rinkeby source: - address: '0xB5f34bd0B3E8e59447fD5a750F2dE4262BABE66C' + address: '0x40F63Ec24aDc291d41F63fBA356Dd9983197c83a' abi: FixedRateExchange - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -64,9 +64,9 @@ dataSources: name: Dispenser network: rinkeby source: - address: '0x17b1760c20eAc7A2656412412F6020e6c00b78BD' + address: '0x5b18fbac5aA81B4a0CAF993afb69b2ADfC3E8833' abi: Dispenser - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -95,9 +95,9 @@ dataSources: name: FactoryRouter network: rinkeby source: - address: '0x31066E8eFe281C755dC21d828bdF30363D055baB' + address: '0x5a31C7e57D51fc0991C1315c66587e7a158c9c40' abi: FactoryRouter - startBlock: 9989814 + startBlock: 10065057 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -135,14 +135,12 @@ templates: - name: ERC20Roles file: ./abis/ERC20Roles.json eventHandlers: - - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,indexed address,uint256) + - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,uint256) handler: handleOrderStarted - event: NewPaymentCollector(indexed address,indexed address,uint256,uint256) handler: handleNewPaymentCollector - event: PublishMarketFees(indexed address,indexed address,uint256) handler: handlePublishMarketFees - - event: ConsumeMarketFees(indexed address,indexed address,uint256) - handler: handleConsumeMarketFees - name: BPool kind: ethereum/contract @@ -192,9 +190,9 @@ templates: - name: ERC721Template file: ./abis/ERC721Template.json eventHandlers: - - event: MetadataCreated(indexed address,uint8,string,bytes,bytes,bytes,uint256,uint256) + - event: MetadataCreated(indexed address,uint8,string,bytes,bytes,bytes32,uint256,uint256) handler: handleCreated - - event: MetadataUpdated(indexed address,uint8,string,bytes,bytes,bytes,uint256,uint256) + - event: MetadataUpdated(indexed address,uint8,string,bytes,bytes,bytes32,uint256,uint256) handler: handleUpdated - event: MetadataState(indexed address,uint8,uint256,uint256) handler: handleState