UNPKG

@justin-gee/uniswap-tokamak-hardhat-v3-deploy

Version:
277 lines (276 loc) 43.5 kB
{ "_format": "hh-sol-artifact-1", "contractName": "QuoterV2", "sourceName": "contracts/lens/QuoterV2.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_WETH9", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "WETH9", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "path", "type": "bytes" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "quoteExactInput", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "internalType": "uint160[]", "name": "sqrtPriceX96AfterList", "type": "uint160[]" }, { "internalType": "uint32[]", "name": "initializedTicksCrossedList", "type": "uint32[]" }, { "internalType": "uint256", "name": "gasEstimate", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "address", "name": "tokenOut", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint24", "name": "fee", "type": "uint24" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "internalType": "struct IQuoterV2.QuoteExactInputSingleParams", "name": "params", "type": "tuple" } ], "name": "quoteExactInputSingle", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceX96After", "type": "uint160" }, { "internalType": "uint32", "name": "initializedTicksCrossed", "type": "uint32" }, { "internalType": "uint256", "name": "gasEstimate", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "path", "type": "bytes" }, { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "name": "quoteExactOutput", "outputs": [ { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint160[]", "name": "sqrtPriceX96AfterList", "type": "uint160[]" }, { "internalType": "uint32[]", "name": "initializedTicksCrossedList", "type": "uint32[]" }, { "internalType": "uint256", "name": "gasEstimate", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "address", "name": "tokenOut", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint24", "name": "fee", "type": "uint24" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "internalType": "struct IQuoterV2.QuoteExactOutputSingleParams", "name": "params", "type": "tuple" } ], "name": "quoteExactOutputSingle", "outputs": [ { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceX96After", "type": "uint160" }, { "internalType": "uint32", "name": "initializedTicksCrossed", "type": "uint32" }, { "internalType": "uint256", "name": "gasEstimate", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "amount0Delta", "type": "int256" }, { "internalType": "int256", "name": "amount1Delta", "type": "int256" }, { "internalType": "bytes", "name": "path", "type": "bytes" } ], "name": "uniswapV3SwapCallback", "outputs": [], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60c06040523480156200001157600080fd5b506040516200249c3803806200249c833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a0516123c8620000d4600039600060b301526000818161015201528181610abb0152610d1c01526123c86000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c45a01551161005b578063c45a01551461014d578063c6a5026a14610174578063cdca175314610187578063fa461e331461019a57600080fd5b80632f80bb1d146100825780634aa4a4fc146100ae578063bd21704a146100fa575b600080fd5b610095610090366004611c10565b6101af565b6040516100a59493929190611c55565b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a5565b61010d610108366004611dbf565b6103c7565b6040805194855273ffffffffffffffffffffffffffffffffffffffff909316602085015263ffffffff9091169183019190915260608201526080016100a5565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b61010d610182366004611dbf565b610668565b610095610195366004611c10565b610890565b6101ad6101a8366004611de2565b610a8a565b005b600060608060006101bf86610c42565b67ffffffffffffffff8111156101d7576101d7611af6565b604051908082528060200260200182016040528015610200578160200160208202803683370190505b50925061020c86610c42565b67ffffffffffffffff81111561022457610224611af6565b60405190808252806020026020018201604052801561024d578160200160208202803683370190505b50915060005b60008060006102618a610c6e565b9250925092506000806000806102e46040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152506103c7565b9350935093509350828b89815181106102ff576102ff611e32565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061034c5761034c611e32565b602002602001019063ffffffff16908163ffffffff1681525050839c5080896103759190611e90565b98508761038181611ea8565b98505061038d8e610caa565b156103a25761039b8e610ce4565b9d506103b2565b8c9b5050505050505050506103be565b50505050505050610253565b92959194509250565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926104059290610d15565b9050866080015173ffffffffffffffffffffffffffffffffffffffff166000036104325760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856104628c60400151610d53565b61046b90611ee0565b60808d015173ffffffffffffffffffffffffffffffffffffffff1615610495578c608001516104ce565b876104be576104b9600173fffd8963efd1fc6a506488495d951d5263988d26611f18565b6104ce565b6104ce6401000276a36001611f4d565b8d602001518e606001518f6000015160405160200161055093929190606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161057f959493929190611fff565b60408051808303816000875af19250505080156105d7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105d491810190612051565b60015b61065b573d808015610605576040519150601f19603f3d011682016040523d82523d6000602084013e61060a565b606091505b505a6106169083612075565b9450886080015173ffffffffffffffffffffffffffffffffffffffff1660000361063f57600080555b61064a818487610d85565b975097509750975050505050610661565b50505050505b9193509193565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926106a69290610d15565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856106d88c60400151610d53565b60808d015173ffffffffffffffffffffffffffffffffffffffff1615610702578c6080015161073b565b8761072b57610726600173fffd8963efd1fc6a506488495d951d5263988d26611f18565b61073b565b61073b6401000276a36001611f4d565b8d600001518e606001518f602001516040516020016107bd93929190606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016107ec959493929190611fff565b60408051808303816000875af1925050508015610844575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261084191810190612051565b60015b61065b573d808015610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b505a6108839083612075565b945061064a818487610d85565b600060608060006108a086610c42565b67ffffffffffffffff8111156108b8576108b8611af6565b6040519080825280602002602001820160405280156108e1578160200160208202803683370190505b5092506108ed86610c42565b67ffffffffffffffff81111561090557610905611af6565b60405190808252806020026020018201604052801561092e578160200160208202803683370190505b50915060005b60008060006109428a610c6e565b9250925092506000806000806109c56040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610668565b9350935093509350828b89815181106109e0576109e0611e32565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a8981518110610a2d57610a2d611e32565b602002602001019063ffffffff16908163ffffffff1681525050839c508089610a569190611e90565b985087610a6281611ea8565b985050610a6e8e610caa565b156103a257610a7c8e610ce4565b9d5050505050505050610934565b6000831380610a995750600082135b610aa257600080fd5b6000806000610ab084610c6e565b925092509250610ae27f0000000000000000000000000000000000000000000000000000000000000000848484610e4a565b506000806000808913610b2e578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a610b2990611ee0565b610b68565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16108989610b6890611ee0565b9250925092506000610b7b878787610d15565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bef91906120b5565b5050505050915091508515610c1557604051848152826020820152816040820152606081fd5b60005415610c2b576000548414610c2b57600080fd5b604051858152826020820152816040820152606081fd5b6000610c5060036014611e90565b60148351610c5e9190612075565b610c68919061217e565b92915050565b60008080610c7c8482610e69565b9250610c89846014610efe565b9050610ca1610c9a60036014611e90565b8590610e69565b91509193909250565b6000610cb860036014611e90565b6014610cc5600382611e90565b610ccf9190611e90565b610cd99190611e90565b825110159050919050565b6060610c68610cf560036014611e90565b610d0160036014611e90565b8451610d0d9190612075565b849190610ff2565b6000610d4b7f0000000000000000000000000000000000000000000000000000000000000000610d4686868661116c565b6111fe565b949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610d8157600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd91906120b5565b50939650610e1294508d935061135792505050565b91975095509050610e3a73ffffffffffffffffffffffffffffffffffffffff8916838361143f565b9350869250505093509350935093565b6000610e6085610e5b86868661116c565b611a9a565b95945050505050565b6000610e76826014611e90565b83511015610ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064015b60405180910390fd5b5001602001516c01000000000000000000000000900490565b600081610f0c816003611e90565b1015610f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f770000000000000000000000000000006044820152606401610edc565b610f7f826003611e90565b83511015610fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e64730000000000000000000000006044820152606401610edc565b50016003015190565b60608161100081601f611e90565b1015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610edc565b6110728284611e90565b845110156110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610edc565b6060821580156110fb5760405191506000825260208201604052611163565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561113457805183526020928301920161111c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051606081018252600080825260208201819052918101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156111c1579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061124057600080fd5b8151602080840151604080860151815173ffffffffffffffffffffffffffffffffffffffff95861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201207fff0000000000000000000000000000000000000000000000000000000000000060a08401529085901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201527fa598dd2fba360510c5a8f02f44423a4468e902df5857dbce3ca162a43a3a31ff60d582015260f501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b6000806000835160601461141e576044845110156113d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f556e6578706563746564206572726f72000000000000000000000000000000006044820152606401610edc565b600484019350838060200190518101906113eb9190612192565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc9190612200565b838060200190518101906114329190612213565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bc9190612251565b6114c6908c61226c565b60020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190612251565b61154b908d61226c565b61155591906122e0565b9050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190612251565b6115d4908d61226c565b60020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164f9190612251565b611659908e61226c565b61166391906122e0565b905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b81526004016116b1919060019190910b815260200190565b602060405180830381865afa1580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f29190612302565b1611801561177957508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a9190612251565b611774908d6122e0565b60020b155b801561178a57508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b81526004016117d8919060019190910b815260200190565b602060405180830381865afa1580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190612302565b161180156118a057508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118919190612251565b61189b908e6122e0565b60020b155b80156118b157508b60020b8d60020b125b95508160010b8460010b12806118dd57508160010b8460010b1480156118dd57508060ff168360ff1611155b156118f357839950829750819850809650611900565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611a64578560010b8760010b0361197b576119518460ff61231b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff919091161c165b6040517f5339c296000000000000000000000000000000000000000000000000000000008152600188900b6004820152600090829073ffffffffffffffffffffffffffffffffffffffff8e1690635339c29690602401602060405180830381865afa1580156119ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a129190612302565b169050611a1e81611aca565b611a2c9061ffff168a61233e565b985087611a388161235d565b9850507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91505061192c565b8115611a7857611a7560018961237d565b97505b8215611a8c57611a8960018961237d565b97505b505050505050509392505050565b6000611aa683836111fe565b90503373ffffffffffffffffffffffffffffffffffffffff821614610c6857600080fd5b6000805b8215610c685780611ade8161239a565b9150611aed9050600184612075565b83169250611ace565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b6c57611b6c611af6565b604052919050565b600067ffffffffffffffff821115611b8e57611b8e611af6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611bcb57600080fd5b8135611bde611bd982611b74565b611b25565b818152846020838601011115611bf357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c2357600080fd5b823567ffffffffffffffff811115611c3a57600080fd5b611c4685828601611bba565b95602094909401359450505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611cac57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611c7a565b50508481036040860152865180825290820192508187019060005b81811015611ce957825163ffffffff1685529383019391830191600101611cc7565b5050505060609290920192909252949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611d2157600080fd5b50565b600060a08284031215611d3657600080fd5b60405160a0810181811067ffffffffffffffff82111715611d5957611d59611af6565b6040529050808235611d6a81611cff565b81526020830135611d7a81611cff565b602082015260408381013590820152606083013562ffffff81168114611d9f57600080fd5b60608201526080830135611db281611cff565b6080919091015292915050565b600060a08284031215611dd157600080fd5b611ddb8383611d24565b9392505050565b600080600060608486031215611df757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611e1c57600080fd5b611e2886828701611bba565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611ea357611ea3611e61565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ed957611ed9611e61565b5060010190565b60007f80000000000000000000000000000000000000000000000000000000000000008203611f1157611f11611e61565b5060000390565b600073ffffffffffffffffffffffffffffffffffffffff83811690831681811015611f4557611f45611e61565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff808316818516808303821115611f7c57611f7c611e61565b01949350505050565b60005b83811015611fa0578181015183820152602001611f88565b83811115611faf576000848401525b50505050565b60008151808452611fcd816020860160208601611f85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261204660a0830184611fb5565b979650505050505050565b6000806040838503121561206457600080fd5b505080516020909101519092909150565b60008282101561208757612087611e61565b500390565b8051600281900b811461209e57600080fd5b919050565b805161ffff8116811461209e57600080fd5b600080600080600080600060e0888a0312156120d057600080fd5b87516120db81611cff565b96506120e96020890161208c565b95506120f7604089016120a3565b9450612105606089016120a3565b9350612113608089016120a3565b925060a088015160ff8116811461212957600080fd5b60c0890151909250801515811461213f57600080fd5b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261218d5761218d61214f565b500490565b6000602082840312156121a457600080fd5b815167ffffffffffffffff8111156121bb57600080fd5b8201601f810184136121cc57600080fd5b80516121da611bd982611b74565b8181528560208385010111156121ef57600080fd5b610e60826020830160208601611f85565b602081526000611ddb6020830184611fb5565b60008060006060848603121561222857600080fd5b83519250602084015161223a81611cff565b91506122486040850161208c565b90509250925092565b60006020828403121561226357600080fd5b611ddb8261208c565b60008160020b8360020b806122835761228361214f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156122d7576122d7611e61565b90059392505050565b60008260020b806122f3576122f361214f565b808360020b0791505092915050565b60006020828403121561231457600080fd5b5051919050565b600060ff821660ff84168082101561233557612335611e61565b90039392505050565b600063ffffffff808316818516808303821115611f7c57611f7c611e61565b60008160010b617fff810361237457612374611e61565b60010192915050565b600063ffffffff83811690831681811015611f4557611f45611e61565b600061ffff8083168181036123b1576123b1611e61565b600101939250505056fea164736f6c634300080f000a", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c45a01551161005b578063c45a01551461014d578063c6a5026a14610174578063cdca175314610187578063fa461e331461019a57600080fd5b80632f80bb1d146100825780634aa4a4fc146100ae578063bd21704a146100fa575b600080fd5b610095610090366004611c10565b6101af565b6040516100a59493929190611c55565b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a5565b61010d610108366004611dbf565b6103c7565b6040805194855273ffffffffffffffffffffffffffffffffffffffff909316602085015263ffffffff9091169183019190915260608201526080016100a5565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b61010d610182366004611dbf565b610668565b610095610195366004611c10565b610890565b6101ad6101a8366004611de2565b610a8a565b005b600060608060006101bf86610c42565b67ffffffffffffffff8111156101d7576101d7611af6565b604051908082528060200260200182016040528015610200578160200160208202803683370190505b50925061020c86610c42565b67ffffffffffffffff81111561022457610224611af6565b60405190808252806020026020018201604052801561024d578160200160208202803683370190505b50915060005b60008060006102618a610c6e565b9250925092506000806000806102e46040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152506103c7565b9350935093509350828b89815181106102ff576102ff611e32565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061034c5761034c611e32565b602002602001019063ffffffff16908163ffffffff1681525050839c5080896103759190611e90565b98508761038181611ea8565b98505061038d8e610caa565b156103a25761039b8e610ce4565b9d506103b2565b8c9b5050505050505050506103be565b50505050505050610253565b92959194509250565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926104059290610d15565b9050866080015173ffffffffffffffffffffffffffffffffffffffff166000036104325760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856104628c60400151610d53565b61046b90611ee0565b60808d015173ffffffffffffffffffffffffffffffffffffffff1615610495578c608001516104ce565b876104be576104b9600173fffd8963efd1fc6a506488495d951d5263988d26611f18565b6104ce565b6104ce6401000276a36001611f4d565b8d602001518e606001518f6000015160405160200161055093929190606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161057f959493929190611fff565b60408051808303816000875af19250505080156105d7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105d491810190612051565b60015b61065b573d808015610605576040519150601f19603f3d011682016040523d82523d6000602084013e61060a565b606091505b505a6106169083612075565b9450886080015173ffffffffffffffffffffffffffffffffffffffff1660000361063f57600080555b61064a818487610d85565b975097509750975050505050610661565b50505050505b9193509193565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926106a69290610d15565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856106d88c60400151610d53565b60808d015173ffffffffffffffffffffffffffffffffffffffff1615610702578c6080015161073b565b8761072b57610726600173fffd8963efd1fc6a506488495d951d5263988d26611f18565b61073b565b61073b6401000276a36001611f4d565b8d600001518e606001518f602001516040516020016107bd93929190606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016107ec959493929190611fff565b60408051808303816000875af1925050508015610844575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261084191810190612051565b60015b61065b573d808015610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b505a6108839083612075565b945061064a818487610d85565b600060608060006108a086610c42565b67ffffffffffffffff8111156108b8576108b8611af6565b6040519080825280602002602001820160405280156108e1578160200160208202803683370190505b5092506108ed86610c42565b67ffffffffffffffff81111561090557610905611af6565b60405190808252806020026020018201604052801561092e578160200160208202803683370190505b50915060005b60008060006109428a610c6e565b9250925092506000806000806109c56040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610668565b9350935093509350828b89815181106109e0576109e0611e32565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a8981518110610a2d57610a2d611e32565b602002602001019063ffffffff16908163ffffffff1681525050839c508089610a569190611e90565b985087610a6281611ea8565b985050610a6e8e610caa565b156103a257610a7c8e610ce4565b9d5050505050505050610934565b6000831380610a995750600082135b610aa257600080fd5b6000806000610ab084610c6e565b925092509250610ae27f0000000000000000000000000000000000000000000000000000000000000000848484610e4a565b506000806000808913610b2e578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a610b2990611ee0565b610b68565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16108989610b6890611ee0565b9250925092506000610b7b878787610d15565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bef91906120b5565b5050505050915091508515610c1557604051848152826020820152816040820152606081fd5b60005415610c2b576000548414610c2b57600080fd5b604051858152826020820152816040820152606081fd5b6000610c5060036014611e90565b60148351610c5e9190612075565b610c68919061217e565b92915050565b60008080610c7c8482610e69565b9250610c89846014610efe565b9050610ca1610c9a60036014611e90565b8590610e69565b91509193909250565b6000610cb860036014611e90565b6014610cc5600382611e90565b610ccf9190611e90565b610cd99190611e90565b825110159050919050565b6060610c68610cf560036014611e90565b610d0160036014611e90565b8451610d0d9190612075565b849190610ff2565b6000610d4b7f0000000000000000000000000000000000000000000000000000000000000000610d4686868661116c565b6111fe565b949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610d8157600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd91906120b5565b50939650610e1294508d935061135792505050565b91975095509050610e3a73ffffffffffffffffffffffffffffffffffffffff8916838361143f565b9350869250505093509350935093565b6000610e6085610e5b86868661116c565b611a9a565b95945050505050565b6000610e76826014611e90565b83511015610ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064015b60405180910390fd5b5001602001516c01000000000000000000000000900490565b600081610f0c816003611e90565b1015610f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f770000000000000000000000000000006044820152606401610edc565b610f7f826003611e90565b83511015610fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e64730000000000000000000000006044820152606401610edc565b50016003015190565b60608161100081601f611e90565b1015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610edc565b6110728284611e90565b845110156110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610edc565b6060821580156110fb5760405191506000825260208201604052611163565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561113457805183526020928301920161111c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051606081018252600080825260208201819052918101919091528273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156111c1579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061124057600080fd5b8151602080840151604080860151815173ffffffffffffffffffffffffffffffffffffffff95861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201207fff0000000000000000000000000000000000000000000000000000000000000060a08401529085901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201527fa598dd2fba360510c5a8f02f44423a4468e902df5857dbce3ca162a43a3a31ff60d582015260f501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b6000806000835160601461141e576044845110156113d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f556e6578706563746564206572726f72000000000000000000000000000000006044820152606401610edc565b600484019350838060200190518101906113eb9190612192565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc9190612200565b838060200190518101906114329190612213565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bc9190612251565b6114c6908c61226c565b60020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190612251565b61154b908d61226c565b61155591906122e0565b9050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190612251565b6115d4908d61226c565b60020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164f9190612251565b611659908e61226c565b61166391906122e0565b905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b81526004016116b1919060019190910b815260200190565b602060405180830381865afa1580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f29190612302565b1611801561177957508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a9190612251565b611774908d6122e0565b60020b155b801561178a57508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b81526004016117d8919060019190910b815260200190565b602060405180830381865afa1580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190612302565b161180156118a057508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118919190612251565b61189b908e6122e0565b60020b155b80156118b157508b60020b8d60020b125b95508160010b8460010b12806118dd57508160010b8460010b1480156118dd57508060ff168360ff1611155b156118f357839950829750819850809650611900565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611a64578560010b8760010b0361197b576119518460ff61231b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff919091161c165b6040517f5339c296000000000000000000000000000000000000000000000000000000008152600188900b6004820152600090829073ffffffffffffffffffffffffffffffffffffffff8e1690635339c29690602401602060405180830381865afa1580156119ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a129190612302565b169050611a1e81611aca565b611a2c9061ffff168a61233e565b985087611a388161235d565b9850507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91505061192c565b8115611a7857611a7560018961237d565b97505b8215611a8c57611a8960018961237d565b97505b505050505050509392505050565b6000611aa683836111fe565b90503373ffffffffffffffffffffffffffffffffffffffff821614610c6857600080fd5b6000805b8215610c685780611ade8161239a565b9150611aed9050600184612075565b83169250611ace565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b6c57611b6c611af6565b604052919050565b600067ffffffffffffffff821115611b8e57611b8e611af6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611bcb57600080fd5b8135611bde611bd982611b74565b611b25565b818152846020838601011115611bf357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611c2357600080fd5b823567ffffffffffffffff811115611c3a57600080fd5b611c4685828601611bba565b95602094909401359450505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611cac57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611c7a565b50508481036040860152865180825290820192508187019060005b81811015611ce957825163ffffffff1685529383019391830191600101611cc7565b5050505060609290920192909252949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611d2157600080fd5b50565b600060a08284031215611d3657600080fd5b60405160a0810181811067ffffffffffffffff82111715611d5957611d59611af6565b6040529050808235611d6a81611cff565b81526020830135611d7a81611cff565b602082015260408381013590820152606083013562ffffff81168114611d9f57600080fd5b60608201526080830135611db281611cff565b6080919091015292915050565b600060a08284031215611dd157600080fd5b611ddb8383611d24565b9392505050565b600080600060608486031215611df757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611e1c57600080fd5b611e2886828701611bba565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611ea357611ea3611e61565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ed957611ed9611e61565b5060010190565b60007f80000000000000000000000000000000000000000000000000000000000000008203611f1157611f11611e61565b5060000390565b600073ffffffffffffffffffffffffffffffffffffffff83811690831681811015611f4557611f45611e61565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff808316818516808303821115611f7c57611f7c611e61565b01949350505050565b60005b83811015611fa0578181015183820152602001611f88565b83811115611faf576000848401525b50505050565b60008151808452611fcd816020860160208601611f85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261204660a0830184611fb5565b979650505050505050565b6000806040838503121561206457600080fd5b505080516020909101519092909150565b60008282101561208757612087611e61565b500390565b8051600281900b811461209e57600080fd5b919050565b805161ffff8116811461209e57600080fd5b600080600080600080600060e0888a0312156120d057600080fd5b87516120db81611cff565b96506120e96020890161208c565b95506120f7604089016120a3565b9450612105606089016120a3565b9350612113608089016120a3565b925060a088015160ff8116811461212957600080fd5b60c0890151909250801515811461213f57600080fd5b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261218d5761218d61214f565b500490565b6000602082840312156121a457600080fd5b815167ffffffffffffffff8111156121bb57600080fd5b8201601f810184136121cc57600080fd5b80516121da611bd982611b74565b8181528560208385010111156121ef57600080fd5b610e60826020830160208601611f85565b602081526000611ddb6020830184611fb5565b60008060006060848603121561222857600080fd5b83519250602084015161223a81611cff565b91506122486040850161208c565b90509250925092565b60006020828403121561226357600080fd5b611ddb8261208c565b60008160020b8360020b806122835761228361214f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156122d7576122d7611e61565b90059392505050565b60008260020b806122f3576122f361214f565b808360020b0791505092915050565b60006020828403121561231457600080fd5b5051919050565b600060ff821660ff84168082101561233557612335611e61565b90039392505050565b600063ffffffff808316818516808303821115611f7c57611f7c611e61565b60008160010b617fff810361237457612374611e61565b60010192915050565b600063ffffffff83811690831681811015611f4557611f45611e61565b600061ffff8083168181036123b1576123b1611e61565b600101939250505056fea164736f6c634300080f000a", "linkReferences": {}, "deployedLinkReferences": {} }