-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathERC4626LinearPoolFactory.json
165 lines (165 loc) · 55.9 KB
/
ERC4626LinearPoolFactory.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC4626LinearPoolFactory",
"sourceName": "contracts/erc4626/ERC4626LinearPoolFactory.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IVault",
"name": "vault",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"name": "PoolCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "contract IERC20",
"name": "mainToken",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "wrappedToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "upperTarget",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "swapFeePercentage",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "create",
"outputs": [
{
"internalType": "contract LinearPool",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getCreationCode",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCreationCodeContracts",
"outputs": [
{
"internalType": "address",
"name": "contractA",
"type": "address"
},
{
"internalType": "address",
"name": "contractB",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPauseConfiguration",
"outputs": [
{
"internalType": "uint256",
"name": "pauseWindowDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bufferPeriodDuration",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getVault",
"outputs": [
{
"internalType": "contract IVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"name": "isPoolFromFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6101406040523480156200001257600080fd5b5060405162005fc238038062005fc28339810160408190526200003591620001c3565b80604051806020016200004890620001b5565b601f1982820381018352601f909101166040528051819060006002820460a081905280830360e0819052818552909150836200009081620000f9602090811b620002eb17901c565b60601b6001600160601b0319166080528285018051838252620000bf82620000f9602090811b620002eb17901c565b6001600160601b0319606091821b811660c0529690935290529590951b90911661010052505050426276a700016101205250620001f39050565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f09084529150620001476001600160a01b03831615156101ac6200014d565b50919050565b816200015e576200015e8162000162565b5050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b61545a8062000b6883390190565b600060208284031215620001d5578081fd5b81516001600160a01b0381168114620001ec578182fd5b9392505050565b60805160601c60a05160c05160601c60e0516101005160601c61012051610913620002556000398061023852806102615250806102c952508061035252508061014a52806103ce52508061037352508061012952806103aa52506109136000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c80632da47c40116100505780632da47c40146100ca5780636634b753146100e05780638d928af81461010057610071565b8062c194db14610076578063174481fa146100945780632ccb254a146100aa575b600080fd5b61007e610108565b60405161008b91906107f0565b60405180910390f35b61009c610127565b60405161008b9291906107be565b6100bd6100b83660046106a7565b61016d565b60405161008b9190610803565b6100d2610232565b60405161008b9291906108aa565b6100f36100ee36600461068b565b61029c565b60405161008b91906107e5565b6100bd6102c7565b60606101226040518060200160405280600081525061034a565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b600080600061017a610232565b9150915060006101c161018b6102c7565b8c8c8c8c8c8c8a8a8e6040516020016101ad9a99989796959493929190610824565b604051602081830303815290604052610423565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b50929d9c50505050505050505050505050565b600080427f000000000000000000000000000000000000000000000000000000000000000081101561028e57807f000000000000000000000000000000000000000000000000000000000000000003925062278d009150610297565b60009250600091505b509091565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f0908452915061034473ffffffffffffffffffffffffffffffffffffffff831615156101ac6104ae565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c50602089810190898501016104158183866104c0565b505050505050505050919050565b60008061042f8361053a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a292915050565b816104bc576104bc81610582565b5050565b5b602081106104fe5781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016104c1565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b600060606105478361034a565b905060008151602083016000f0905073ffffffffffffffffffffffffffffffffffffffff811661057b573d6000803e3d6000fd5b9392505050565b7f08c379a0000000000000000000000000000000000000000000000000000000006000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600082601f8301126105ff578081fd5b813567ffffffffffffffff80821115610616578283fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201018181108382111715610654578485fd5b60405282815292508284830160200186101561066f57600080fd5b8260208601602083013760006020848301015250505092915050565b60006020828403121561069c578081fd5b813561057b816108b8565b600080600080600080600060e0888a0312156106c1578283fd5b873567ffffffffffffffff808211156106d8578485fd5b6106e48b838c016105ef565b985060208a01359150808211156106f9578485fd5b506107068a828b016105ef565b9650506040880135610717816108b8565b94506060880135610727816108b8565b93506080880135925060a0880135915060c0880135610745816108b8565b8091505092959891949750929550565b60008151808452815b8181101561077a5760208185018101518683018201520161075e565b8181111561078b5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b60006020825261057b6020830184610755565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600061014073ffffffffffffffffffffffffffffffffffffffff808e1684528160208501526108558285018e610755565b91508382036040850152610869828d610755565b9a811660608501529889166080840152505060a081019590955260c085019390935260e0840191909152610100830152909116610120909101529392505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b5056fea2646970667358221220cf8fd2a13d121cb64f3b9f3da109cb422cb3a45583c9fb8a66c81a7a20dd7e5464736f6c634300070100336102c06040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200545a3803806200545a8339810160408190526200005a9162000bd0565b898989898989898989898960008a8a620000768b8b30620004f5565b6040805160038082526080820190925290602082016060803683370190505089898989828289898d8280604051806040016040528060018152602001603160f81b81525085858a336001600160a01b031660001b806080818152505050806001600160a01b031660a0816001600160a01b031660601b815250505081600390805190602001906200010992919062000a5c565b5080516200011f90600490602084019062000a5c565b505060058054601260ff1990911617905550815160209283012060c052805191012060e052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6101005260601b6001600160601b03191661014052506200019290506276a700831115610194620005c4565b620001a662278d00821115610195620005c4565b4290910161016081905201610180528551620001c8906002111560c8620005c4565b620001e2620001d6620005d9565b8751111560c9620005c4565b620001f886620005de60201b620014891760201c565b6200020384620005ea565b6040516309b2760f60e01b81526000906001600160a01b038c16906309b2760f9062000234908d9060040162000d6e565b602060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000bb7565b604051633354e3e960e11b81529091506001600160a01b038c16906366a9c7d290620002bf9084908b908b9060040162000cd2565b600060405180830381600087803b158015620002da57600080fd5b505af1158015620002ef573d6000803e3d6000fd5b50505050806101a081815250505050505050505050505050866001600160a01b03166101c0816001600160a01b031660601b81525050856001600160a01b03166101e0816001600160a01b031660601b8152505060008060006200035b8a8a306200067660201b60201c565b610200819052610220839052610240829052919450925090506200037f8a6200076c565b610260526200038e896200076c565b610280526000620003a18b828b62000840565b50505050505050505050505050506000866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620003eb57600080fd5b505afa15801562000400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000426919062000caf565b60ff1690506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046757600080fd5b505afa1580156200047c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a2919062000caf565b60ff1690506000620004da82620004c6601286620008ee60201b620014931760201c565b6200090b60201b620014a51790919060201c565b600a0a6102a0525062000da69b505050505050505050505050565b6060600080806200050887878762000676565b60408051600380825260808201909252939650919450925060208201606080368337019050509350868484815181106200053e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858483815181106200056c57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848482815181106200059a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505050509392505050565b81620005d557620005d58162000923565b5050565b600390565b80620005d58162000976565b620005ff64e8d4a5100082101560cb620005c4565b6200061767016345785d8a000082111560ca620005c4565b620006368160c060085462000a0360201b620014bb179092919060201c565b6008556040517fa9ba3ffe0b6c366b81232caab38605a0699ad5398d6cce76f91ee809e322dafc906200066b90839062000d83565b60405180910390a150565b6000806000846001600160a01b0316866001600160a01b03161015620006ff57836001600160a01b0316856001600160a01b03161015620006c257506000915060019050600262000763565b836001600160a01b0316866001600160a01b03161015620006ee57506000915060029050600162000763565b506001915060029050600062000763565b846001600160a01b0316846001600160a01b031610156200072b57506002915060019050600062000763565b856001600160a01b0316846001600160a01b031610156200075757506002915060009050600162000763565b50600191506000905060025b93509350939050565b60006001600160a01b038216301415620007905750670de0b6b3a76400006200083b565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620007cc57600080fd5b505afa158015620007e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000807919062000caf565b60ff1690506000620008266012836200090b60201b620014a51760201c565b905080600a0a670de0b6b3a764000002925050505b919050565b620008518183111561014c620005c4565b620008696001600160601b0382111561014d620005c4565b620008a46200088582606062000a1860201b620014d11760201c565b6200089d84600062000a1860201b620014d11760201c565b1762000a1c565b826001600160a01b03167fd0e27a0d0c2cb09280fa5e4487315455b32afcdcf012dc35b6ef2a0e3c4d12808383604051620008e192919062000d8c565b60405180910390a2505050565b6000828201620009028482101583620005c4565b90505b92915050565b60006200091d838311156001620005c4565b50900390565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600281511015620009875762000a00565b6000816000815181106200099757fe5b602002602001015190506000600190505b8251811015620009fd576000838281518110620009c157fe5b60200260200101519050620009f2816001600160a01b0316846001600160a01b0316106065620005c460201b60201c565b9150600101620009a8565b50505b50565b6001600160401b03811b1992909216911b1790565b1b90565b62000a3b81600060085462000a4160201b620014d5179092919060201c565b60085550565b6001600160c01b03828116821b90821b198416179392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a9f57805160ff191683800117855562000acf565b8280016001018555821562000acf579182015b8281111562000acf57825182559160200191906001019062000ab2565b5062000add92915062000ae1565b5090565b5b8082111562000add576000815560010162000ae2565b80516001600160a01b03811681146200090557600080fd5b600082601f83011262000b21578081fd5b81516001600160401b038082111562000b38578283fd5b6040516020601f8401601f191682018101838111838210171562000b5a578586fd5b8060405250819450838252868185880101111562000b7757600080fd5b600092505b8383101562000b9b578583018101518284018201529182019162000b7c565b8383111562000bad5760008185840101525b5050505092915050565b60006020828403121562000bc9578081fd5b5051919050565b6000806000806000806000806000806101408b8d03121562000bf0578586fd5b62000bfc8c8c62000af8565b60208c0151909a506001600160401b038082111562000c19578788fd5b62000c278e838f0162000b10565b9a5060408d015191508082111562000c3d578788fd5b5062000c4c8d828e0162000b10565b98505062000c5e8c60608d0162000af8565b965062000c6f8c60808d0162000af8565b955060a08b0151945060c08b0151935060e08b015192506101008b0151915062000c9e8c6101208d0162000af8565b90509295989b9194979a5092959850565b60006020828403121562000cc1578081fd5b815160ff8116811462000902578182fd5b60006060820185835260206060818501528186518084526080860191508288019350845b8181101562000d1e5762000d0b855162000d9a565b8352938301939183019160010162000cf6565b505084810360408601528551808252908201925081860190845b8181101562000d605762000d4d835162000d9a565b8552938301939183019160010162000d38565b509298975050505050505050565b602081016003831062000d7d57fe5b91905290565b90815260200190565b918252602082015260400190565b6001600160a01b031690565b60805160a05160601c60c05160e05161010051610120516101405160601c61016051610180516101a0516101c05160601c6101e05160601c61020051610220516102405161026051610280516102a0516144dd62000f7d600039806125f15250806115af52508061154b528061241d5250806107c75280610b7a52806115d7528061280652806129b65280612b0d5280612c7f5280612e1b5280612f725250806109755280610b40528061156d5280611c2052806127d2528061293b52806129825280612a975280612ad95280612c4b5280612da55280612de75280612efc5280612f3e525080610bbb5280610d8a5280610e77528061140a52806116185280612362528061283d52806129ed5280612b445280612cb65280612e525280612fa9528061318e52806131c652508061145d528061173352806117ff5280612443528061278752806128c75280612c015280612d31525080610999528061101652806116ea52806117b65280611c5652806123e2528061274852806128695280612a235280612bc25280612ce25280612e885250806109165250806119df5250806119bb525080610f375250806110cc525080611ae5525080611b27525080611b06525080610f13525080610e9d52506144dd6000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c8063679aefce1161018657806395d89b41116100e3578063d505accf11610097578063de82cd3411610071578063de82cd341461056b578063f174e24114610573578063f5431aa81461057b576102d3565b8063d505accf14610532578063d5c096c414610545578063dd62ed3e14610558576102d3565b8063a457c2d7116100c8578063a457c2d714610504578063a9059cbb14610517578063aaabadc51461052a576102d3565b806395d89b41146104e95780639f11080e146104f1576102d3565b806382687a561161013a57806387ec68171161011f57806387ec6817146104c6578063893d20e8146104d95780638d928af8146104e1576102d3565b806382687a56146104ab578063851c1bb3146104b3576102d3565b806374f3b0091161016b57806374f3b0091461046f5780637ecebe00146104905780638129fc1c146104a3576102d3565b8063679aefce1461045457806370a082311461045c576102d3565b80633644e515116102345780634de046d5116101e857806355c67628116101cd57806355c67628146104155780636028bfd41461041d57806363fe3b561461043e576102d3565b80634de046d5146103ed57806350dd6ed914610402576102d3565b806338fff2d01161021957806338fff2d0146103ca57806339509351146103d25780634d64cd74146103e5576102d3565b80633644e515146103af57806338e9922e146103b7576102d3565b806318160ddd1161028b5780631dd746ea116102705780631dd746ea1461037257806323b872dd14610387578063313ce5671461039a576102d3565b806318160ddd146103535780631c0de0511461035b576102d3565b8063095ea7b3116102bc578063095ea7b31461031657806316b8d6ff1461033657806316c38b3c1461033e576102d3565b806301ec954a146102d857806306fdde0314610301575b600080fd5b6102eb6102e6366004613f11565b610583565b6040516102f89190614231565b60405180910390f35b6103096106f9565b6040516102f891906143e9565b610329610324366004613c4e565b6107ae565b6040516102f8919061420e565b6102eb6107c5565b61035161034c366004613d45565b6107e9565b005b6102eb6107fd565b610363610803565b6040516102f893929190614219565b61037a61082c565b6040516102f891906141d6565b610329610395366004613b99565b61083b565b6103a26108cf565b6040516102f89190614423565b6102eb6108d8565b6103516103c5366004614030565b6108e2565b6102eb610914565b6103296103e0366004613c4e565b610938565b6102eb610973565b6103f5610997565b6040516102f891906141c2565b610351610410366004613e7c565b6109bb565b6102eb6109d9565b61043061042b366004613d7d565b6109ea565b6040516102f89291906143fc565b610446610a21565b6040516102f8929190614415565b6102eb610a4f565b6102eb61046a366004613b45565b610c03565b61048261047d366004613d7d565b610c22565b6040516102f89291906141e9565b6102eb61049e366004613b45565b610ca0565b610351610cbb565b6102eb610e75565b6102eb6104c1366004613e20565b610e99565b6104306104d4366004613d7d565b610eeb565b6103f5610f11565b6103f5610f35565b610309610f59565b6103516104ff366004614060565b610fd8565b610329610512366004613c4e565b611042565b610329610525366004613c4e565b611080565b6103f561108d565b610351610540366004613bd9565b611097565b610482610553366004613d7d565b6111e0565b6102eb610566366004613b61565b611311565b6102eb61136c565b6103f561145b565b6102eb61147f565b600084608001516105b0610595610f35565b6001600160a01b0316336001600160a01b03161460cd611501565b6105c56105bb610914565b82146101f4611501565b6105cd61150f565b6105e76003851080156105e05750600384105b6064611501565b60606105f1611524565b90506105fd8682611651565b600080610608610a21565b9150915061061461399c565b60405180606001604052806106276109d9565b815260208101859052604001839052905060008a51600181111561064757fe5b14156106ab5761066e8a60600151858a8151811061066157fe5b60200260200101516116b2565b60608b015260006106808b8b846116be565b905061069f81868a8151811061069257fe5b6020026020010151611785565b965050505050506106f0565b6106bf8a6060015185898151811061066157fe5b60608b015260006106d18b8b84611791565b905061069f81868b815181106106e357fe5b6020026020010151611846565b50949350505050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b505050505090505b90565b60006107bb338484611852565b5060015b92915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107f16118ba565b6107fa81611900565b50565b60025490565b600080600061081061199c565b15925061081b6119b9565b91506108256119dd565b9050909192565b6060610836611524565b905090565b6000806108488533611311565b905061086c336001600160a01b03871614806108645750838210155b61019e611501565b610877858585611a01565b336001600160a01b038616148015906108b057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b156108c2576108c28533858403611852565b60019150505b9392505050565b60055460ff1690565b6000610836611ae1565b6000806108ed610a21565b915091506109066108fe8383611b7e565b61014f611501565b61090f83611c96565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107bb91859061096e9086611493565b611852565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6109c36118ba565b6109cb61150f565b6109d58282611caf565b5050565b6008546000906108369060c0611d8f565b60006060610a0086516109fb611d9d565b611da2565b610a1589898989898989611daf611e53611eb4565b97509795505050505050565b6000806000610a2e612044565b9050610a3b81600061204a565b9250610a4881606061204a565b9150509091565b600080610a5a610914565b90506060610a66610f35565b6001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401610a919190614231565b60006040518083038186803b158015610aa957600080fd5b505afa158015610abd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ae59190810190613c79565b50915050610afa81610af5611524565b611651565b600080610b05610a21565b91509150610b1161399c565b6040518060600160405280610b246109d9565b81526020018481526020018381525090506000610bb0610b77867f000000000000000000000000000000000000000000000000000000000000000081518110610b6957fe5b60200260200101518461205c565b867f000000000000000000000000000000000000000000000000000000000000000081518110610ba357fe5b60200260200101516120bd565b9050610bf8610bf1867f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b60200260200101516120c9565b82906120dc565b965050505050505090565b6001600160a01b0381166000908152602081905260409020545b919050565b60608088610c31610595610f35565b610c3c6105bb610914565b6060610c46611524565b9050610c528882611651565b6000606080610c678e8e8e8e8e8e8a8f611daf565b925092509250610c778d84612133565b610c818285611e53565b610c8b8185611e53565b909550935050505b5097509795505050505050565b6001600160a01b031660009081526006602052604090205490565b6000610cc5610914565b90506060610cd1610f35565b6001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401610cfc9190614231565b60006040518083038186803b158015610d1457600080fd5b505afa158015610d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d509190810190613c79565b505060408051600380825260808201909252919250606091906020820183803683370190505090506dffffffffffffffffffffffffffff817f000000000000000000000000000000000000000000000000000000000000000081518110610db357fe5b602002602001018181525050610dc76139bd565b6040518060800160405280610ddb856107ab565b8152602001838152602001604051806020016040528060008152508152602001600015158152509050610e0c610f35565b6001600160a01b031663b95cac28853030856040518563ffffffff1660e01b8152600401610e3d9493929190614259565b600060405180830381600087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610ece92919061414c565b604051602081830303815290604052805190602001209050919050565b60006060610efc86516109fb611d9d565b610a158989898989898961213d61215b611eb4565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b610fe06118ba565b600080610feb610a21565b91509150610ffc6108fe8383611b7e565b6110116110098585611b7e565b610157611501565b61103c7f000000000000000000000000000000000000000000000000000000000000000085856121bc565b50505050565b60008061104f3385611311565b90508083106110695761106433856000611852565b611076565b6110763385858403611852565b5060019392505050565b60006107bb338484611a01565b600061083661224d565b6110a58442111560d1611501565b6001600160a01b03871660009081526006602090815260408083205490519092916110fc917f0000000000000000000000000000000000000000000000000000000000000000918c918c918c9188918d910161433b565b604051602081830303815290604052805190602001209050600061111f826122c7565b905060006001828888886040516000815260200160405260405161114694939291906143cb565b6020604051602081039080840390855afa158015611168573d6000803e3d6000fd5b5050604051601f19015191506111aa90506001600160a01b038216158015906111a257508b6001600160a01b0316826001600160a01b0316145b6101f8611501565b6001600160a01b038b1660009081526006602052604090206001850190556111d38b8b8b611852565b5050505050505050505050565b606080886111ef610595610f35565b6111fa6105bb610914565b6060611204611524565b905061120e6107fd565b6112c157600060606112238d8d8d868b6122e3565b9150915061123c6112326123a4565b83101560cc611501565b61124e60006112496123a4565b6123a9565b6112618b61125a6123a4565b84036123a9565b61126b818461215b565b80611274611d9d565b67ffffffffffffffff8111801561128a57600080fd5b506040519080825280602002602001820160405280156112b4578160200160208202803683370190505b5095509550505050610c93565b6112cb8882611651565b60006060806112e08e8e8e8e8e8e8a8f61213d565b9250925092506112f08c846123a9565b6112fa828561215b565b6113048185611e53565b9095509350610c93915050565b600061131b610f35565b6001600160a01b0316826001600160a01b0316141561135b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107bf565b61136583836123b3565b90506107bf565b60006060611378610f35565b6001600160a01b031663f94d466861138e610914565b6040518263ffffffff1660e01b81526004016113aa9190614231565b60006040518083038186803b1580156113c257600080fd5b505afa1580156113d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113fe9190810190613c79565b509150506000611449827f00000000000000000000000000000000000000000000000000000000000000008151811061143357fe5b6020026020010151611444306123de565b6116b2565b9050611454816124b8565b9250505090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006108366124cc565b806109d581612625565b60008282016108c88482101583611501565b60006114b5838311156001611501565b50900390565b67ffffffffffffffff811b1992909216911b1790565b1b90565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116821b90821b198416179392505050565b816109d5576109d58161269e565b61152261151a61199c565b610192611501565b565b604080516003808252608082019092526060918291906020820183803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000817f00000000000000000000000000000000000000000000000000000000000000008151811061159657fe5b6020026020010181815250506115d46115ad6124cc565b7f00000000000000000000000000000000000000000000000000000000000000009061270b565b817f00000000000000000000000000000000000000000000000000000000000000008151811061160057fe5b602002602001018181525050670de0b6b3a7640000817f00000000000000000000000000000000000000000000000000000000000000008151811061164157fe5b6020908102919091010152905090565b60005b61165c611d9d565b81101561090f5761169383828151811061167257fe5b602002602001015183838151811061168657fe5b602002602001015161270b565b83828151811061169f57fe5b6020908102919091010152600101611654565b60006108c8838361270b565b60208301516000906001600160a01b03163014156116e8576116e1848484612741565b90506108c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684602001516001600160a01b03161415611731576116e18484846128c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684602001516001600160a01b0316141561177a576116e1848484612a1c565b6108c861013561269e565b60006108c88383612b73565b60408301516000906001600160a01b03163014156117b4576116e1848484612bbb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684604001516001600160a01b031614156117fd576116e1848484612d2a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684604001516001600160a01b0316141561177a576116e1848484612e81565b60006108c883836120dc565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906118ad908590614231565b60405180910390a3505050565b60006118e96000357fffffffff0000000000000000000000000000000000000000000000000000000016610e99565b90506107fa6118f88233612fd8565b610191611501565b80156119205761191b6119116119b9565b4210610193611501565b611935565b61193561192b6119dd565b42106101a9611501565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790556040517f9e3a5e37224532dea67b89face185703738a228a6e8a23dee546960180d3be649061199190839061420e565b60405180910390a150565b60006119a66119dd565b42118061083657505060075460ff161590565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b611a186001600160a01b0384161515610198611501565b611a2f6001600160a01b0383161515610199611501565b611a3a83838361090f565b6001600160a01b038316600090815260208190526040902054611a6090826101a06130c1565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611a8f9082611493565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118ad908590614231565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611b4e6130d7565b30604051602001611b6395949392919061436f565b60405160208183030381529060405280519060200120905090565b600080611b89610914565b90506060611b95610f35565b6001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401611bc09190614231565b60006040518083038186803b158015611bd857600080fd5b505afa158015611bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c149190810190613c79565b509150506000611c7a827f000000000000000000000000000000000000000000000000000000000000000081518110611c4957fe5b60200260200101516114447f00000000000000000000000000000000000000000000000000000000000000006123de565b9050858110158015611c8c5750848111155b9695505050505050565b611c9e6118ba565b611ca661150f565b6107fa816130db565b6000611cb9610914565b90506000611cc5610f35565b6001600160a01b031663b05f8e4883866040518363ffffffff1660e01b8152600401611cf29291906143b4565b60806040518083038186803b158015611d0a57600080fd5b505afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d429190614081565b6040517f18e736d40000000000000000000000000000000000000000000000000000000081529094506001600160a01b03851693506318e736d49250610e3d91508590879060040161439b565b1c67ffffffffffffffff1690565b600390565b6109d58183146067611501565b60006060806000611dbf85613146565b90506000818015611dcc57fe5b14611de157611ddc61014e61269e565b611e44565b611de961315c565b611df38986613170565b9094509250611e00611d9d565b67ffffffffffffffff81118015611e1657600080fd5b50604051908082528060200260200182016040528015611e40578160200160208202803683370190505b5091505b50985098509895505050505050565b60005b611e5e611d9d565b81101561090f57611e95838281518110611e7457fe5b6020026020010151838381518110611e8857fe5b6020026020010151612b73565b838281518110611ea157fe5b6020908102919091010152600101611e56565b333014611fa3576000306001600160a01b0316600036604051611ed892919061417c565b6000604051808303816000865af19150503d8060008114611f15576040519150601f19603f3d011682016040523d82523d6000602084013e611f1a565b606091505b505090508060008114611f2957fe5b60046000803e6000517fffffffff00000000000000000000000000000000000000000000000000000000167f43adbafb000000000000000000000000000000000000000000000000000000008114611f85573d6000803e3d6000fd5b506020600460003e604060205260243d03602460403e601c3d016000f35b6060611fad611524565b9050611fb98782611651565b60006060611fd18c8c8c8c8c8c898d8d63ffffffff16565b5091509150611fe481848663ffffffff16565b8051601f1982018390526343adbafb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301526020027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82016044820181fd5b60085490565b1c6bffffffffffffffffffffffff1690565b600081602001518310156120955781516020830151600091612081918690039061270b565b905061208d84826114a5565b9150506107bf565b816040015183116120a75750816107bf565b815160408301516000916120819186039061270b565b60006108c88383611493565b6dffffffffffffffffffffffffffff0390565b60006120eb8215156004611501565b826120f8575060006107bf565b670de0b6b3a76400008381029061211b9085838161211257fe5b04146005611501565b82600182038161212757fe5b046001019150506107bf565b6109d582826131f7565b600060608061214d61014e61269e565b985098509895505050505050565b60005b612166611d9d565b81101561090f5761219d83828151811061217c57fe5b602002602001015183838151811061219057fe5b60200260200101516120dc565b8382815181106121a957fe5b602090810291909101015260010161215e565b6121cb8183111561014c611501565b6121e66bffffffffffffffffffffffff82111561014d611501565b6122056121f48260606114d1565b6121ff8460006114d1565b176132b3565b826001600160a01b03167fd0e27a0d0c2cb09280fa5e4487315455b32afcdcf012dc35b6ef2a0e3c4d12808383604051612240929190614415565b60405180910390a2505050565b6000612257610f35565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561228f57600080fd5b505afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108369190613e60565b60006122d1611ae1565b82604051602001610ece92919061418c565b600060606122ef61150f565b6123066001600160a01b0387163014610156611501565b61231d6001600160a01b0386163014610156611501565b604080516003808252608082019092526dffffffffffffffffffffffffffff91606091906020820183803683370190505090506dffffffffffffffffffffffffffff817f00000000000000000000000000000000000000000000000000000000000000008151811061238b57fe5b6020908102919091010152909890975095505050505050565b600090565b6109d582826132c8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561244157507f0000000000000000000000000000000000000000000000000000000000000000610c1d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561248d576124866115ad6124cc565b9050610c1d565b6001600160a01b0382163014156124ad5750670de0b6b3a7640000610c1d565b610c1d61013561269e565b60006107bf826124c66107fd565b906114a5565b6000806124d761145b565b90506000816001600160a01b03166301e1d1146040518163ffffffff1660e01b815260040160206040518083038186803b15801561251457600080fd5b505afa158015612528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254c9190614048565b90506000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561258957600080fd5b505afa15801561259d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c19190614048565b90508115806125ce575080155b156125e657670de0b6b3a764000093505050506107ab565b600061261c826126167f000000000000000000000000000000000000000000000000000000000000000086613356565b90613370565b94505050505090565b600281511015612634576107fa565b60008160008151811061264357fe5b602002602001015190506000600190505b825181101561090f57600083828151811061266b57fe5b60200260200101519050612694816001600160a01b0316846001600160a01b0316106065611501565b9150600101612654565b7f08c379a0000000000000000000000000000000000000000000000000000000006000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600082820261272f84158061272857508385838161272557fe5b04145b6003611501565b670de0b6b3a764000090049392505050565b60006127c77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b031614806127bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b0316145b610135611501565b6128b88460600151847f0000000000000000000000000000000000000000000000000000000000000000815181106127fb57fe5b6020026020010151857f00000000000000000000000000000000000000000000000000000000000000008151811061282f57fe5b6020026020010151612866877f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a604001516001600160a01b0316146128ac576133906128b0565b6133f05b63ffffffff16565b949350505050565b600061291c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b031614806127bf575060408501516001600160a01b03163014610135611501565b60408401516001600160a01b03163014612977576129728460600151847f00000000000000000000000000000000000000000000000000000000000000008151811061296457fe5b602002602001015184613459565b6128b8565b6128b88460600151847f0000000000000000000000000000000000000000000000000000000000000000815181106129ab57fe5b6020026020010151857f0000000000000000000000000000000000000000000000000000000000000000815181106129df57fe5b6020026020010151612a16877f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b86613489565b6000612a787f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b031614806127bf575060408501516001600160a01b03163014610135611501565b60408401516001600160a01b03163014612ace576129728460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612ac057fe5b6020026020010151846134ef565b6128b88460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612b0257fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612b3657fe5b6020026020010151612b6d877f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b8661352f565b6000612b828215156004611501565b82612b8f575060006107bf565b670de0b6b3a764000083810290612ba99085838161211257fe5b828181612bb257fe5b049150506107bf565b6000612c407f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b031614806127bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b031614610135611501565b6128b88460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612c7457fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612ca857fe5b6020026020010151612cdf877f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a602001516001600160a01b031614612d25576135966128b0565b6135ed565b6000612d867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b031614806127bf575060208501516001600160a01b03163014610135611501565b60208401516001600160a01b03163014612ddc576129728460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612dce57fe5b602002602001015184613657565b6128b88460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612e1057fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612e4457fe5b6020026020010151612e7b877f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b86613681565b6000612edd7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b031614806127bf575060208501516001600160a01b03163014610135611501565b60208401516001600160a01b03163014612f33576129728460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612f2557fe5b6020026020010151846136d0565b6128b88460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612f6757fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612f9b57fe5b6020026020010151612fd2877f000000000000000000000000000000000000000000000000000000000000000081518110610be457fe5b86613705565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b612ff7610f11565b6001600160a01b031614158015613012575061301283613759565b1561303a5761301f610f11565b6001600160a01b0316336001600160a01b03161490506107bf565b61304261224d565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b81526004016130719392919061423a565b60206040518083038186803b15801561308957600080fd5b505afa15801561309d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113659190613d61565b60006130d08484111583611501565b5050900390565b4690565b6130ee64e8d4a5100082101560cb611501565b61310467016345785d8a000082111560ca611501565b600854613113908260c06114bb565b6008556040517fa9ba3ffe0b6c366b81232caab38605a0699ad5398d6cce76f91ee809e322dafc90611991908390614231565b6000818060200190518101906107bf9190613eca565b61152261316761199c565b156101af611501565b60006060600061317f84613795565b905060606131ea86836131c4897f0000000000000000000000000000000000000000000000000000000000000000815181106131b757fe5b60200260200101516124b8565b7f00000000000000000000000000000000000000000000000000000000000000006137ab565b9196919550909350505050565b61320e6001600160a01b038316151561019b611501565b61321a8260008361090f565b6001600160a01b03821660009081526020819052604090205461324090826101b26130c1565b6001600160a01b0383166000908152602081905260409020556002546132669082613867565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906132a7908590614231565b60405180910390a35050565b6008546132c2908260006114d5565b60085550565b6132d46000838361090f565b6002546132e19082611493565b6002556001600160a01b0382166000908152602081905260409020546133079082611493565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906132a7908590614231565b60008282026108c884158061272857508385838161272557fe5b600061337f8215156004611501565b81838161338857fe5b049392505050565b60008061339d868461205c565b905060006133ab82876120bd565b905060006133b9868a6114a5565b905060006133d4846124c66133ce8587613356565b8a613875565b90506133e088826114a5565b9450505050505b95945050505050565b6000806133fd868461205c565b9050600061340b82876120bd565b9050600061342261341c838b613356565b87613370565b9050600061343084836114a5565b9050600061343e82886138a8565b905061344a8a826114a5565b9b9a5050505050505050505050565b600080613466848461205c565b9050600061347d6134778688611493565b8561205c565b9050611c8c81836114a5565b6000826134a15761349a868361205c565b90506133e7565b60006134ad868461205c565b905060006134be613477888a611493565b905060006134cc82846114a5565b905060006134da84896120bd565b90506133e06134e98884613356565b82613370565b6000806134fc848461205c565b9050600061350a82876114a5565b9050600061351882866138a8565b905061352486826114a5565b979650505050505050565b60008261353d5750846133e7565b6000613549868461205c565b9050600061355782876120bd565b90506000613565878a611493565b9050600061357384836120bd565b9050600061358a6135848984613356565b85613370565b905061344a81896114a5565b6000826135a45750846133e7565b60006135b0868461205c565b905060006135be82876120bd565b905060006135cc868a611493565b905060006135e1846124c66133ce8587613356565b90506133e081896114a5565b6000826135fe5761349a86836138a8565b600061360a868461205c565b9050600061361882876120bd565b9050600061362f613629838b613356565b87613875565b9050600061363d8483611493565b9050600061364b82886138a8565b905061344a818b6114a5565b600080613664848461205c565b9050600061367561347786886114a5565b9050611c8c82826114a5565b60008061368e868461205c565b9050600061369f613477888a6114a5565b905060006136ad83836114a5565b905060006136bb84896120bd565b90506133e06136ca8884613356565b82613875565b6000806136dd848461205c565b905060006136eb8287611493565b905060006136f982866138a8565b905061352481876114a5565b600080613712868461205c565b9050600061372082876120bd565b9050600061372e878a6114a5565b9050600061373c84836120bd565b9050600061374d6135848984613356565b905061344a88826114a5565b60006137847f9f11080e00000000000000000000000000000000000000000000000000000000610e99565b8214806107bf57506107bf82613938565b6000818060200190518101906108c89190613ee5565b606060006137b98585612b73565b90506060865167ffffffffffffffff811180156137d557600080fd5b506040519080825280602002602001820160405280156137ff578160200160208202803683370190505b50905060005b875181101561385c578481146138545761383b8389838151811061382557fe5b602002602001015161270b90919063ffffffff16565b82828151811061384757fe5b6020026020010181815250505b600101613805565b509695505050505050565b60006108c8838360016130c1565b60006138848215156004611501565b82613891575060006107bf565b81600184038161389d57fe5b0460010190506107bf565b600081602001518310156138f1578151611365906138cf90670de0b6b3a764000090611493565b602084015184516138eb916138e4919061270b565b8690611493565b90612b73565b816040015183116139035750816107bf565b81516113659061391c90670de0b6b3a7640000906114a5565b604084015184516138eb91613931919061270b565b86906114a5565b60006139637f38e9922e00000000000000000000000000000000000000000000000000000000610e99565b8214806107bf57506139947f50dd6ed900000000000000000000000000000000000000000000000000000000610e99565b909114919050565b60405180606001604052806000815260200160008152602001600081525090565b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b80356107bf81614484565b600082601f830112613a02578081fd5b8135613a15613a1082614458565b614431565b818152915060208083019084810181840286018201871015613a3657600080fd5b60005b84811015613a5557813584529282019290820190600101613a39565b505050505092915050565b600082601f830112613a70578081fd5b8151613a7e613a1082614458565b818152915060208083019084810181840286018201871015613a9f57600080fd5b60005b84811015613a5557815184529282019290820190600101613aa2565b600082601f830112613ace578081fd5b813567ffffffffffffffff811115613ae4578182fd5b613af76020601f19601f84011601614431565b9150808252836020828501011115613b0e57600080fd5b8060208401602084013760009082016020015292915050565b8051600181106107bf57600080fd5b8035600281106107bf57600080fd5b600060208284031215613b56578081fd5b81356108c881614484565b60008060408385031215613b73578081fd5b8235613b7e81614484565b91506020830135613b8e81614484565b809150509250929050565b600080600060608486031215613bad578081fd5b8335613bb881614484565b92506020840135613bc881614484565b929592945050506040919091013590565b600080600080600080600060e0888a031215613bf3578283fd5b8735613bfe81614484565b96506020880135613c0e81614484565b95506040880135945060608801359350608088013560ff81168114613c31578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613c60578182fd5b8235613c6b81614484565b946020939093013593505050565b600080600060608486031215613c8d578081fd5b835167ffffffffffffffff80821115613ca4578283fd5b818601915086601f830112613cb7578283fd5b8151613cc5613a1082614458565b80828252602080830192508086018b828387028901011115613ce5578788fd5b8796505b84871015613d10578051613cfc81614484565b845260019690960195928101928101613ce9565b508901519097509350505080821115613d27578283fd5b50613d3486828701613a60565b925050604084015190509250925092565b600060208284031215613d56578081fd5b81356108c881614499565b600060208284031215613d72578081fd5b81516108c881614499565b600080600080600080600060e0888a031215613d97578081fd5b873596506020880135613da981614484565b95506040880135613db981614484565b9450606088013567ffffffffffffffff80821115613dd5578283fd5b613de18b838c016139f2565b955060808a0135945060a08a0135935060c08a0135915080821115613e04578283fd5b50613e118a828b01613abe565b91505092959891949750929550565b600060208284031215613e31578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108c8578182fd5b600060208284031215613e71578081fd5b81516108c881614484565b60008060408385031215613e8e578182fd5b8235613e9981614484565b9150602083013567ffffffffffffffff811115613eb4578182fd5b613ec085828601613abe565b9150509250929050565b600060208284031215613edb578081fd5b6108c88383613b27565b60008060408385031215613ef7578182fd5b613f018484613b27565b9150602083015190509250929050565b60008060008060808587031215613f26578182fd5b843567ffffffffffffffff80821115613f3d578384fd5b818701915061012080838a031215613f53578485fd5b613f5c81614431565b9050613f688984613b36565b8152613f7789602085016139e7565b6020820152613f8989604085016139e7565b6040820152606083013560608201526080830135608082015260a083013560a0820152613fb98960c085016139e7565b60c0820152613fcb8960e085016139e7565b60e08201526101008084013583811115613fe3578687fd5b613fef8b828701613abe565b82840152505080965050602087013591508082111561400c578384fd5b50614019878288016139f2565b949794965050505060408301359260600135919050565b600060208284031215614041578081fd5b5035919050565b600060208284031215614059578081fd5b5051919050565b60008060408385031215614072578182fd5b50508035926020909101359150565b60008060008060808587031215614096578182fd5b84519350602085015192506040850151915060608501516140b681614484565b939692955090935050565b6000815180845260208085019450808401835b838110156140f0578151875295820195908201906001016140d4565b509495945050505050565b15159052565b60008151808452815b818110156141265760208185018101518683018201520161410a565b818111156141375782602083870101525b50601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6000828483379101908152919050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6000602082526108c860208301846140c1565b6000604082526141fc60408301856140c1565b82810360208401526133e781856140c1565b901515815260200190565b92151583526020830191909152604082015260600190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b600085825260206001600160a01b038087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b808310156142ca576142b48451614478565b82529284019260019290920191908401906142a2565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261430881856140c1565b935050506040850151818584030160c08601526143258382614101565b92505050606084015161385c60e08501826140fb565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6000838252604060208301526128b86040830184614101565b9182526001600160a01b0316602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526108c86020830184614101565b6000838252604060208301526128b860408301846140c1565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561445057600080fd5b604052919050565b600067ffffffffffffffff82111561446e578081fd5b5060209081020190565b6001600160a01b031690565b6001600160a01b03811681146107fa57600080fd5b80151581146107fa57600080fdfea2646970667358221220b636112632f715f59c9c6dbdf377917a589c32f3e1bf0e8ae9d2a2df5894186f64736f6c63430007010033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100715760003560e01c80632da47c40116100505780632da47c40146100ca5780636634b753146100e05780638d928af81461010057610071565b8062c194db14610076578063174481fa146100945780632ccb254a146100aa575b600080fd5b61007e610108565b60405161008b91906107f0565b60405180910390f35b61009c610127565b60405161008b9291906107be565b6100bd6100b83660046106a7565b61016d565b60405161008b9190610803565b6100d2610232565b60405161008b9291906108aa565b6100f36100ee36600461068b565b61029c565b60405161008b91906107e5565b6100bd6102c7565b60606101226040518060200160405280600081525061034a565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b600080600061017a610232565b9150915060006101c161018b6102c7565b8c8c8c8c8c8c8a8a8e6040516020016101ad9a99989796959493929190610824565b604051602081830303815290604052610423565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b50929d9c50505050505050505050505050565b600080427f000000000000000000000000000000000000000000000000000000000000000081101561028e57807f000000000000000000000000000000000000000000000000000000000000000003925062278d009150610297565b60009250600091505b509091565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f0908452915061034473ffffffffffffffffffffffffffffffffffffffff831615156101ac6104ae565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c50602089810190898501016104158183866104c0565b505050505050505050919050565b60008061042f8361053a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a292915050565b816104bc576104bc81610582565b5050565b5b602081106104fe5781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016104c1565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b600060606105478361034a565b905060008151602083016000f0905073ffffffffffffffffffffffffffffffffffffffff811661057b573d6000803e3d6000fd5b9392505050565b7f08c379a0000000000000000000000000000000000000000000000000000000006000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600082601f8301126105ff578081fd5b813567ffffffffffffffff80821115610616578283fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201018181108382111715610654578485fd5b60405282815292508284830160200186101561066f57600080fd5b8260208601602083013760006020848301015250505092915050565b60006020828403121561069c578081fd5b813561057b816108b8565b600080600080600080600060e0888a0312156106c1578283fd5b873567ffffffffffffffff808211156106d8578485fd5b6106e48b838c016105ef565b985060208a01359150808211156106f9578485fd5b506107068a828b016105ef565b9650506040880135610717816108b8565b94506060880135610727816108b8565b93506080880135925060a0880135915060c0880135610745816108b8565b8091505092959891949750929550565b60008151808452815b8181101561077a5760208185018101518683018201520161075e565b8181111561078b5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b60006020825261057b6020830184610755565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600061014073ffffffffffffffffffffffffffffffffffffffff808e1684528160208501526108558285018e610755565b91508382036040850152610869828d610755565b9a811660608501529889166080840152505060a081019590955260c085019390935260e0840191909152610100830152909116610120909101529392505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b5056fea2646970667358221220cf8fd2a13d121cb64f3b9f3da109cb422cb3a45583c9fb8a66c81a7a20dd7e5464736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}