UNPKG

@astonic-io/astonic-bindings-ts

Version:

Astonic type generation and npm package deployment repo

966 lines 60.6 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.BiPoolManager__factory = void 0; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ var ethers_1 = require("ethers"); var _abi = [ { type: "constructor", inputs: [ { name: "test", type: "bool", internalType: "bool", }, ], stateMutability: "nonpayable", }, { type: "function", name: "CONSTANT_PRODUCT", inputs: [], outputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "view", }, { type: "function", name: "CONSTANT_SUM", inputs: [], outputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "view", }, { type: "function", name: "breakerBox", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract IBreakerBox", }, ], stateMutability: "view", }, { type: "function", name: "broker", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "createExchange", inputs: [ { name: "_exchange", type: "tuple", internalType: "struct IBiPoolManager.PoolExchange", components: [ { name: "asset0", type: "address", internalType: "address", }, { name: "asset1", type: "address", internalType: "address", }, { name: "pricingModule", type: "address", internalType: "contract IPricingModule", }, { name: "bucket0", type: "uint256", internalType: "uint256", }, { name: "bucket1", type: "uint256", internalType: "uint256", }, { name: "lastBucketUpdate", type: "uint256", internalType: "uint256", }, { name: "config", type: "tuple", internalType: "struct IBiPoolManager.PoolConfig", components: [ { name: "spread", type: "tuple", internalType: "struct FixidityLib.Fraction", components: [ { name: "value", type: "uint256", internalType: "uint256", }, ], }, { name: "referenceRateFeedID", type: "address", internalType: "address", }, { name: "referenceRateResetFrequency", type: "uint256", internalType: "uint256", }, { name: "minimumReports", type: "uint256", internalType: "uint256", }, { name: "stablePoolResetSize", type: "uint256", internalType: "uint256", }, ], }, ], }, ], outputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "nonpayable", }, { type: "function", name: "destroyExchange", inputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, { name: "exchangeIdIndex", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "destroyed", type: "bool", internalType: "bool", }, ], stateMutability: "nonpayable", }, { type: "function", name: "exchangeIds", inputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "view", }, { type: "function", name: "exchanges", inputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], outputs: [ { name: "asset0", type: "address", internalType: "address", }, { name: "asset1", type: "address", internalType: "address", }, { name: "pricingModule", type: "address", internalType: "contract IPricingModule", }, { name: "bucket0", type: "uint256", internalType: "uint256", }, { name: "bucket1", type: "uint256", internalType: "uint256", }, { name: "lastBucketUpdate", type: "uint256", internalType: "uint256", }, { name: "config", type: "tuple", internalType: "struct IBiPoolManager.PoolConfig", components: [ { name: "spread", type: "tuple", internalType: "struct FixidityLib.Fraction", components: [ { name: "value", type: "uint256", internalType: "uint256", }, ], }, { name: "referenceRateFeedID", type: "address", internalType: "address", }, { name: "referenceRateResetFrequency", type: "uint256", internalType: "uint256", }, { name: "minimumReports", type: "uint256", internalType: "uint256", }, { name: "stablePoolResetSize", type: "uint256", internalType: "uint256", }, ], }, ], stateMutability: "view", }, { type: "function", name: "getAmountIn", inputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, { name: "tokenIn", type: "address", internalType: "address", }, { name: "tokenOut", type: "address", internalType: "address", }, { name: "amountOut", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "amountIn", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getAmountOut", inputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, { name: "tokenIn", type: "address", internalType: "address", }, { name: "tokenOut", type: "address", internalType: "address", }, { name: "amountIn", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "amountOut", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getExchangeIds", inputs: [], outputs: [ { name: "", type: "bytes32[]", internalType: "bytes32[]", }, ], stateMutability: "view", }, { type: "function", name: "getExchanges", inputs: [], outputs: [ { name: "_exchanges", type: "tuple[]", internalType: "struct IExchangeProvider.Exchange[]", components: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, { name: "assets", type: "address[]", internalType: "address[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "getPoolExchange", inputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, ], outputs: [ { name: "exchange", type: "tuple", internalType: "struct IBiPoolManager.PoolExchange", components: [ { name: "asset0", type: "address", internalType: "address", }, { name: "asset1", type: "address", internalType: "address", }, { name: "pricingModule", type: "address", internalType: "contract IPricingModule", }, { name: "bucket0", type: "uint256", internalType: "uint256", }, { name: "bucket1", type: "uint256", internalType: "uint256", }, { name: "lastBucketUpdate", type: "uint256", internalType: "uint256", }, { name: "config", type: "tuple", internalType: "struct IBiPoolManager.PoolConfig", components: [ { name: "spread", type: "tuple", internalType: "struct FixidityLib.Fraction", components: [ { name: "value", type: "uint256", internalType: "uint256", }, ], }, { name: "referenceRateFeedID", type: "address", internalType: "address", }, { name: "referenceRateResetFrequency", type: "uint256", internalType: "uint256", }, { name: "minimumReports", type: "uint256", internalType: "uint256", }, { name: "stablePoolResetSize", type: "uint256", internalType: "uint256", }, ], }, ], }, ], stateMutability: "view", }, { type: "function", name: "initialize", inputs: [ { name: "_broker", type: "address", internalType: "address", }, { name: "_reserve", type: "address", internalType: "contract IReserve", }, { name: "_sortedOracles", type: "address", internalType: "contract ISortedOracles", }, { name: "_breakerBox", type: "address", internalType: "contract IBreakerBox", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "initialized", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "isOwner", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "owner", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "pricingModules", inputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "renounceOwnership", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "reserve", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract IReserve", }, ], stateMutability: "view", }, { type: "function", name: "setBreakerBox", inputs: [ { name: "_breakerBox", type: "address", internalType: "contract IBreakerBox", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setBroker", inputs: [ { name: "_broker", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setPricingModules", inputs: [ { name: "identifiers", type: "bytes32[]", internalType: "bytes32[]", }, { name: "modules", type: "address[]", internalType: "address[]", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setReserve", inputs: [ { name: "_reserve", type: "address", internalType: "contract IReserve", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setSortedOracles", inputs: [ { name: "_sortedOracles", type: "address", internalType: "contract ISortedOracles", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "sortedOracles", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract ISortedOracles", }, ], stateMutability: "view", }, { type: "function", name: "swapIn", inputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, { name: "tokenIn", type: "address", internalType: "address", }, { name: "tokenOut", type: "address", internalType: "address", }, { name: "amountIn", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "amountOut", type: "uint256", internalType: "uint256", }, ], stateMutability: "nonpayable", }, { type: "function", name: "swapOut", inputs: [ { name: "exchangeId", type: "bytes32", internalType: "bytes32", }, { name: "tokenIn", type: "address", internalType: "address", }, { name: "tokenOut", type: "address", internalType: "address", }, { name: "amountOut", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "amountIn", type: "uint256", internalType: "uint256", }, ], stateMutability: "nonpayable", }, { type: "function", name: "tokenPrecisionMultipliers", inputs: [ { name: "", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "transferOwnership", inputs: [ { name: "newOwner", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "event", name: "BreakerBoxUpdated", inputs: [ { name: "newBreakerBox", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "BrokerUpdated", inputs: [ { name: "newBroker", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "BucketsUpdated", inputs: [ { name: "exchangeId", type: "bytes32", indexed: true, internalType: "bytes32", }, { name: "bucket0", type: "uint256", indexed: false, internalType: "uint256", }, { name: "bucket1", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "ExchangeCreated", inputs: [ { name: "exchangeId", type: "bytes32", indexed: true, internalType: "bytes32", }, { name: "asset0", type: "address", indexed: true, internalType: "address", }, { name: "asset1", type: "address", indexed: true, internalType: "address", }, { name: "pricingModule", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "ExchangeDestroyed", inputs: [ { name: "exchangeId", type: "bytes32", indexed: true, internalType: "bytes32", }, { name: "asset0", type: "address", indexed: true, internalType: "address", }, { name: "asset1", type: "address", indexed: true, internalType: "address", }, { name: "pricingModule", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "OwnershipTransferred", inputs: [ { name: "previousOwner", type: "address", indexed: true, internalType: "address", }, { name: "newOwner", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "PricingModulesUpdated", inputs: [ { name: "newIdentifiers", type: "bytes32[]", indexed: false, internalType: "bytes32[]", }, { name: "newAddresses", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "ReserveUpdated", inputs: [ { name: "newReserve", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "SortedOraclesUpdated", inputs: [ { name: "newSortedOracles", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, ]; var _bytecode = "0x60806040523480156200001157600080fd5b5060405162003f2d38038062003f2d8339810160408190526200003491620000cf565b808062000049576000805460ff191660011790555b5060006200005f6001600160e01b03620000b816565b60008054610100600160a81b0319166101006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505062000117565b3390565b8051620000c981620000fd565b92915050565b600060208284031215620000e257600080fd5b6000620000f08484620000bc565b949350505050565b151590565b6200010881620000f8565b81146200011457600080fd5b50565b613e0680620001276000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063abff011011610104578063d482dda6116100a2578063f2fde38b11610071578063f2fde38b146103cd578063f414c5e4146103e0578063f670dde1146103e8578063f8c8765e146103fb576101da565b8063d482dda61461036c578063dc162e3614610392578063e46eb5b6146103a7578063eaaba701146103ba576101da565b8063c0ad52d5116100de578063c0ad52d514610341578063cd3293de14610349578063cd8513ba14610351578063d3385d0514610359576101da565b8063abff011014610313578063b08986911461031b578063bf0d02131461032e576101da565b8063450154211161017c5780638da5cb5b1161014b5780638da5cb5b146102d05780638f32d59b146102e557806393c7e3bc146102ed5780639cecc80a14610300576101da565b8063450154211461028f57806345b2b467146102a25780634afb215e146102b5578063715018a6146102c8576101da565b80631e2e3a6b116101b85780631e2e3a6b14610227578063278488a41461023c57806338b1e9f71461025c57806342bfc99c1461027c576101da565b8063040bbd35146101df578063132e8aa7146101f4578063158ef93e14610212575b600080fd5b6101f26101ed366004612ce0565b61040e565b005b6101fc6104b7565b6040516102099190613a4e565b60405180910390f35b61021a6104c6565b6040516102099190613a32565b61022f6104cf565b6040516102099190613a21565b61024f61024a366004612c3d565b610698565b6040516102099190613c4d565b61026f61026a366004612c3d565b61077b565b6040516102099190613a40565b61026f61028a366004612c5b565b610799565b6101f261029d366004612b75565b610908565b61026f6102b0366004612af6565b610a0a565b6101f26102c3366004612ce0565b610a1c565b6101f2610ab0565b6102d8610b23565b6040516102099190613974565b61021a610b37565b61026f6102fb366004612c5b565b610b60565b6101f261030e366004612ce0565b610beb565b6102d8610c7f565b61026f610329366004612d33565b610c8e565b6101f261033c366004612af6565b611324565b61026f6113b8565b6101fc6113e0565b61026f6113ef565b61026f610367366004612c5b565b6113fe565b61037f61037a366004612c3d565b611560565b6040516102099796959493929190613982565b61039a6115ec565b6040516102099190613a10565b61021a6103b5366004612cb0565b611644565b6102d86103c8366004612c3d565b6119a4565b6101f26103db366004612af6565b6119bf565b6101fc6119ef565b61026f6103f6366004612c5b565b6119fe565b6101f2610409366004612b14565b611a7d565b610416610b37565b61043b5760405162461bcd60e51b815260040161043290613b8d565b60405180910390fd5b6001600160a01b0381166104615760405162461bcd60e51b815260040161043290613c0d565b600580546001600160a01b0319166001600160a01b0383161790556040517f21921b3b46ef2c939e85d6a14410c6e3b9ce132b66e944357ff4f789f68e00e2906104ac908390613974565b60405180910390a150565b6006546001600160a01b031681565b60005460ff1681565b6003546040805182815260208084028201019091526060919081801561050f57816020015b6104fc6127cb565b8152602001906001900390816104f45790505b50915060005b81811015610693576003818154811061052a57fe5b906000526020600020015483828151811061054157fe5b60209081029190910101515260408051600280825260608201909252908160200160208202803883390190505083828151811061057a57fe5b602002602001015160200181905250600260006003838154811061059a57fe5b9060005260206000200154815260200190815260200160002060000160009054906101000a90046001600160a01b03168382815181106105d657fe5b6020026020010151602001516000815181106105ee57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600260006003838154811061061f57fe5b9060005260206000200154815260200190815260200160002060010160009054906101000a90046001600160a01b031683828151811061065b57fe5b60200260200101516020015160018151811061067357fe5b6001600160a01b0390921660209283029190910190910152600101610515565b505090565b6106a06127e3565b50600081815260026020818152604092839020835160e08101855281546001600160a01b03908116825260018301548116828501529382015484168186015260038201546060808301919091526004830154608080840191909152600584015460a080850191909152875160c08181018a5260068701549282019283529181526007860154881696810196909652600885015497860197909752600984015491850191909152600a9092015491830191909152928301528151166107765760405162461bcd60e51b815260040161043290613bdd565b919050565b6003818154811061078857fe5b600091825260209091200154905081565b6001546000906001600160a01b031633146107c65760405162461bcd60e51b815260040161043290613b1d565b6107ce6127e3565b6107d786610698565b60055460c08201516020015160405163060582ed60e51b81529293506000926001600160a01b039092169163c0b05da09161081491600401613974565b60206040518083038186803b15801561082c57600080fd5b505afa158015610840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108649190810190612dbf565b60ff16146108845760405162461bcd60e51b815260040161043290613a6d565b6001600160a01b0385166000908152600760205260408120546108ae90859063ffffffff611ae016565b90506000806108bf84898986611b23565b915091506108d189858a868686611d2b565b6001600160a01b0387166000908152600760205260409020546108fb90839063ffffffff611e4c16565b9998505050505050505050565b610910610b37565b61092c5760405162461bcd60e51b815260040161043290613b8d565b82811461094b5760405162461bcd60e51b815260040161043290613c3d565b60005b838110156109c65782828281811061096257fe5b90506020020160206109779190810190612af6565b6008600087878581811061098757fe5b6020908102929092013583525081019190915260400160002080546001600160a01b0319166001600160a01b039290921691909117905560010161094e565b507f84557d458d60fcb29d9a10a8f28861c76847f7ef6450a9266a228a6f3a590baa848484846040516109fc94939291906139df565b60405180910390a150505050565b60076020526000908152604090205481565b610a24610b37565b610a405760405162461bcd60e51b815260040161043290613b8d565b6001600160a01b038116610a665760405162461bcd60e51b815260040161043290613bed565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f590fd633a008765ce9e65e8081adfba311e99e11b958a5ecb5000ea3355f735390600090a250565b610ab8610b37565b610ad45760405162461bcd60e51b815260040161043290613b8d565b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054610100600160a81b0319169055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610b51611e8e565b6001600160a01b031614905090565b6000610b6a6127e3565b610b7386610698565b6001600160a01b03861660009081526007602052604081205491925090610ba190859063ffffffff611ae016565b90506000610bb183888885611b23565b506001600160a01b038716600090815260076020526040902054909150610bdf90829063ffffffff611e4c16565b98975050505050505050565b610bf3610b37565b610c0f5760405162461bcd60e51b815260040161043290613b8d565b6001600160a01b038116610c355760405162461bcd60e51b815260040161043290613bfd565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f0b248ab246a87e452fbedee8dc12dfc53e3f3bfdc6920999062c56dea4ab522a90600090a250565b6001546001600160a01b031681565b6000610c98610b37565b610cb45760405162461bcd60e51b815260040161043290613b8d565b610cbc6127e3565b610ccb36849003840184612d52565b60408101519091506001600160a01b0316610cf85760405162461bcd60e51b815260040161043290613b5d565b80516001600160a01b0316610d1f5760405162461bcd60e51b815260040161043290613abd565b60208101516001600160a01b0316610d495760405162461bcd60e51b815260040161043290613bad565b80602001516001600160a01b031681600001516001600160a01b03161415610d835760405162461bcd60e51b815260040161043290613b9d565b80604001516001600160a01b031660086000610d9e84611e92565b81526020810191909152604001600020546001600160a01b031614610dd55760405162461bcd60e51b815260040161043290613b7d565b80600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610e1257600080fd5b505afa158015610e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e4e9190810190612cfe565b81602001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610e8b57600080fd5b505afa158015610e9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ec79190810190612cfe565b82604001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f409190810190612cfe565b604051602001610f529392919061393a565b60408051601f198184030181529181528151602092830120600081815260029093529120549092506001600160a01b031615610fa05760405162461bcd60e51b815260040161043290613aed565b610fa981611f3a565b600080610fb58361215f565b915091508183606001818152505080836080018181525050600083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561100c57600080fd5b505afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110449190810190612dbf565b60ff169050600084602001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561108857600080fd5b505afa15801561109c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c09190810190612dbf565b60ff16905060128211156110e65760405162461bcd60e51b815260040161043290613afd565b60128111156111075760405162461bcd60e51b815260040161043290613b3d565b81601203600a0a6007600087600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555080601203600a0a6007600087602001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550846002600088815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060160008201518160000160008201518160000155505060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002015560608201518160030155608082015181600401555050905050600386908060018154018082558091505090600182039060005260206000200160009091929091909150555084602001516001600160a01b031685600001516001600160a01b0316877fb374789237d43aed0f75b4c50a45793fd70e354bb96eecd573f35f5d509d78a188604001516040516113129190613974565b60405180910390a45050505050919050565b61132c610b37565b6113485760405162461bcd60e51b815260040161043290613b8d565b6001600160a01b03811661136e5760405162461bcd60e51b815260040161043290613c2d565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f865dab7821134b6eb27cba259b40e33bbc1b898e970a535a18a83147f380a51f90600090a250565b6040516020016113c790613969565b6040516020818303038152906040528051906020012081565b6004546001600160a01b031681565b6040516020016113c79061395e565b6001546000906001600160a01b0316331461142b5760405162461bcd60e51b815260040161043290613b1d565b6114336127e3565b61143c86610698565b60055460c08201516020015160405163060582ed60e51b81529293506000926001600160a01b039092169163c0b05da09161147991600401613974565b60206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114c99190810190612dbf565b60ff16146114e95760405162461bcd60e51b815260040161043290613a6d565b6001600160a01b03841660009081526007602052604081205461151390859063ffffffff611ae016565b9050600080611524848989866121af565b9150915061153689858a858786611d2b565b6001600160a01b0388166000908152600760205260409020546108fb90839063ffffffff611e4c16565b6002602081815260009283526040928390208054600182015493820154600383015460048401546005850154885160c081018a52600687015460a08201908152815260078701546001600160a01b0390811698820198909852600887015499810199909952600986015460608a0152600a90950154608089015292851696958516959190941693929087565b6060600380548060200260200160405190810160405280929190818152602001828054801561163a57602002820191906000526020600020905b815481526020019060010190808311611626575b5050505050905090565b600061164e610b37565b61166a5760405162461bcd60e51b815260040161043290613b8d565b600354821061168b5760405162461bcd60e51b815260040161043290613acd565b826003838154811061169957fe5b9060005260206000200154146116c15760405162461bcd60e51b815260040161043290613bbd565b6116c96127e3565b600260008581526020019081526020016000206040518060e00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600382015481526020016004820154815260200160058201548152602001600682016040518060a00160405290816000820160405180602001604052908160008201548152505081526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600282015481526020016003820154815260200160048201548152505081525050905060026000858152602001908152602001600020600080820160006101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b0302191690556002820160006101000a8154906001600160a01b03021916905560038201600090556004820160009055600582016000905560068201600080820160008082016000905550506001820160006101000a8154906001600160a01b0302191690556002820160009055600382016000905560048201600090555050505060036118f260016003805490506122c190919063ffffffff16565b815481106118fc57fe5b90600052602060002001546003848154811061191457fe5b600091825260209091200155600380548061192b57fe5b600190038181906000526020600020016000905590556001915080602001516001600160a01b031681600001516001600160a01b0316857fadbbec6c203cb0248e89fe6d15ad651061a9d5203a1ab0273256e2b7decffa8984604001516040516119959190613974565b60405180910390a45092915050565b6008602052600090815260409020546001600160a01b031681565b6119c7610b37565b6119e35760405162461bcd60e51b815260040161043290613b8d565b6119ec81612303565b50565b6005546001600160a01b031681565b6000611a086127e3565b611a1186610698565b6001600160a01b03851660009081526007602052604081205491925090611a3f90859063ffffffff611ae016565b90506000611a4f838888856121af565b506001600160a01b038816600090815260076020526040902054909150610bdf90829063ffffffff611e4c16565b60005460ff1615611aa05760405162461bcd60e51b815260040161043290613a8d565b6000805460ff19166001179055611ab633612303565b611abf84611324565b611ac883610beb565b611ad182610a1c565b611ada8161040e565b50505050565b600082611aef57506000611b1d565b82820282848281611afc57fe5b0414611b1a5760405162461bcd60e51b815260040161043290613b6d565b90505b92915050565b60008084848780600001516001600160a01b0316836001600160a01b0316148015611b63575080602001516001600160a01b0316826001600160a01b0316145b80611b9a575080602001516001600160a01b0316836001600160a01b0316148015611b9a575080516001600160a01b038381169116145b611bb65760405162461bcd60e51b815260040161043290613c1d565b611bbf8961238f565b8151919a5094506001600160a01b0389811691161415611c7e5788604001516001600160a01b03166352707d8c8a606001518b60800151611c078d60c00151600001516123c7565b8a6040518563ffffffff1660e01b8152600401611c279493929190613c77565b60206040518083038186803b158015611c3f57600080fd5b505afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c779190810190612d71565b9450611d1f565b88604001516001600160a01b03166352707d8c8a608001518b60600151611cac8d60c00151600001516123c7565b8a6040518563ffffffff1660e01b8152600401611ccc9493929190613c77565b60206040518083038186803b158015611ce457600080fd5b505afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d1c9190810190612d71565b94505b50505094509492505050565b8015611d8f57426002600088815260200190815260200160002060050181905550857f949f5db193cbfa01f2d443b1c656bfede15497de0d86838cea089bd60c43834286606001518760800151604051611d86929190613c5c565b60405180910390a25b611d98856123cb565b15611e205784516001600160a01b0385811691161415611deb576060850151611dc7908463ffffffff61240216565b60608601526080850151611de1908363ffffffff6122c116565b6080860152611e20565b6060850151611e00908363ffffffff6122c116565b60608601526080850151611e1a908463ffffffff61240216565b60808601525b505050606082015160009384526002602052604090932060038101939093555060800151600490910155565b6000611b1a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612427565b3390565b600081604001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015611ed157600080fd5b505afa158015611ee5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f0d9190810190612cfe565b604051602001611f1d919061392e565b604051602081830303815290604052805190602001209050919050565b600480548251604051634f8e6e2360e01b81526001600160a01b0390921692634f8e6e2392611f6a929101613974565b60206040518083038186803b158015611f8257600080fd5b505afa158015611f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fba9190810190612be5565b611fd65760405162461bcd60e51b815260040161043290613a7d565b600480546020830151604051634f8e6e2360e01b81526001600160a01b0390921692634f8e6e2392612009929101613974565b60206040518083038186803b15801561202157600080fd5b505afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120599190810190612be5565b806120e25750600480546020830151604051636570c17f60e11b81526001600160a01b039092169263cae182fe92612092929101613974565b60206040518083038186803b1580156120aa57600080fd5b505afa1580156120be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120e29190810190612be5565b6120fe5760405162461bcd60e51b815260040161043290613b0d565b60c08101515161211590612110612460565b612484565b6121315760405162461bcd60e51b815260040161043290613b4d565b60c0810151602001516001600160a01b03166119ec5760405162461bcd60e51b815260040161043290613bcd565b6000808260c001516080015191506000806121818560c001516020015161248c565b90925090506121a68261219a838763ffffffff611ae016565b9063ffffffff611e4c16565b92505050915091565b60008084848780600001516001600160a01b0316836001600160a01b03161480156121ef575080602001516001600160a01b0316826001600160a01b0316145b80612226575080602001516001600160a01b0316836001600160a01b0316148015612226575080516001600160a01b038381169116145b6122425760405162461bcd60e51b815260040161043290613c1d565b61224b8961238f565b8151919a5094506001600160a01b03898116911614156122935788604001516001600160a01b031663571fd0128a606001518b60800151611c078d60c00151600001516123c7565b88604001516001600160a01b031663571fd0128a608001518b60600151611cac8d60c00151600001516123c7565b6000611b1a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612532565b6001600160a01b0381166123295760405162461bcd60e51b815260040161043290613a9d565b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6123976127e3565b60006123a28361255e565b156123be576123b08361215f565b608085015260608401525060015b8291505b915091565b5190565b60006040516020016123dc9061395e565b604051602081830303815290604052805190602001206123fb83611e92565b1492915050565b600082820183811015611b1a5760405162461bcd60e51b815260040161043290613add565b600081836124485760405162461bcd60e51b81526004016104329190613a5c565b50600083858161245457fe5b049150505b9392505050565b612468612840565b50604080516020810190915269d3c21bcecceda1000000815290565b519051111590565b600654604051630ef90e1b60e41b815260009182916001600160a01b039091169063ef90e1b0906124c1908690600401613974565b604080518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125109190810190612d8f565b9092509050806123c25760405162461bcd60e51b815260040161043290613b2d565b600081848411156125565760405162461bcd60e51b81526004016104329190613a5c565b505050900390565b60008061256a836125cf565b9050612575836127ba565b1561259757806125975760405162461bcd60e51b815260040161043290613aad565b60006125b88460c00151604001518560a0015161240290919063ffffffff16565b42101590508080156125c75750815b949350505050565b60065460c08201516020015160405160016218c94160e01b0319815260009283926001600160a01b039091169163ffe736bf9161260e91600401613974565b604080518083038186803b15801561262557600080fd5b505afa158015612639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061265d9190810190612c03565b5060c08401516060810151600654602090920151604051632ef19aa560e21b815293945060009391926001600160a01b03169163bbc66a94916126a291600401613974565b60206040518083038186803b1580156126ba57600080fd5b505afa1580156126ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126f29190810190612d71565b1015905060006127138560c0015160400151426122c190919063ffffffff16565b60065460c0870151602001516040516301c6d23f60e21b81526001600160a01b039092169163071b48fc9161274a91600401613974565b60206040518083038186803b15801561276257600080fd5b505afa158015612776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061279a9190810190612d71565b119050821580156127a85750815b80156127b15750805b95945050505050565b60006040516020016123dc90613969565b60408051808201909152600081526060602082015290565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200161283b612853565b905290565b6040518060200160405280600081525090565b6040518060a00160405280612866612840565b815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b8035611b1d81613d8b565b8051611b1d81613d8b565b60008083601f8401126128b957600080fd5b50813567ffffffffffffffff8111156128d157600080fd5b6020830191508360208202830111156128e957600080fd5b9250929050565b8051611b1d81613d9f565b8035611b1d81613da8565b8035611b1d81613db1565b600082601f83011261292257600080fd5b815161293561293082613cd3565b613cac565b9150808252602083016020830185838301111561295157600080fd5b61295c838284613d55565b50505092915050565b60006020828403121561297757600080fd5b6129816020613cac565b9050600061298f84846128fb565b82525092915050565b600060a082840312156129aa57600080fd5b6129b460a0613cac565b905060006129c28484612965565b82525060206129d384848301612891565b60208301525060406129e7848285016128fb565b60408301525060606129fb848285016128fb565b6060830152506080612a0f848285016128fb565b60808301525092915050565b60006101608284031215612a2e57600080fd5b50919050565b60006101608284031215612a4757600080fd5b612a5160e0613cac565b90506000612a5f8484612891565b8252506020612a7084848301612891565b6020830152506040612a8484828501612906565b6040830152506060612a98848285016128fb565b6060830152506080612aac848285016128fb565b60808301525060a0612ac0848285016128fb565b60a08301525060c0612ad484828501612998565b60c08301525092915050565b8051611b1d81613da8565b8051611b1d81613dba565b600060208284031215612b0857600080fd5b60006125c78484612891565b60008060008060808587031215612b2a57600080fd5b6000612b368787612891565b9450506020612b4787828801612906565b9350506040612b5887828801612906565b9250506060612b6987828801612906565b91505092959194509250565b60008060008060408587031215612b8b57600080fd5b843567ffffffffffffffff811115612ba257600080fd5b612bae878288016128a7565b9450945050602085013567ffffffffffffffff811115612bcd57600080fd5b612bd9878288016128a7565b95989497509550505050565b600060208284031215612bf757600080fd5b60006125c784846128f0565b60008060408385031215612c1657600080fd5b6000612c2285856128f0565b9250506020612c338582860161289c565b9150509250929050565b600060208284031215612c4f57600080fd5b60006125c784846128fb565b60008060008060808587031215612c7157600080fd5b6000612c7d87876128fb565b9450506020612c8e87828801612891565b935050