{
  "_format": "hh-sol-artifact-1",
  "contractName": "QuoterV2",
  "sourceName": "contracts/lens/QuoterV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WNativeToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_poolDeployer",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WNativeToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        }
      ],
      "name": "algebraSwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolDeployer",
      "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": "uint160",
              "name": "limitSqrtPrice",
              "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": "uint160",
              "name": "limitSqrtPrice",
              "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"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b50604051620020a8380380620020a883398101604081905262000034916200006e565b6001600160a01b03928316608052821660a0521660c052620000b8565b80516001600160a01b03811681146200006957600080fd5b919050565b6000806000606084860312156200008457600080fd5b6200008f8462000051565b92506200009f6020850162000051565b9150620000af6040850162000051565b90509250925092565b60805160a05160c051611fb3620000f5600039600061018501526000818160d30152818161020e0152610c1e015260006101ac0152611fb36000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80635e5e6e0f1161005b5780635e5e6e0f1461016d5780638af3ac8514610180578063c45a0155146101a7578063cdca1753146101ce57600080fd5b80632c8958f61461008d5780632f80bb1d146100a25780633119049a146100ce5780635877c9b91461011a575b600080fd5b6100a061009b3660046118ba565b6101e1565b005b6100b56100b036600461190a565b610393565b6040516100c5949392919061194f565b60405180910390f35b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c5565b61012d610128366004611a9e565b61059a565b6040805194855273ffffffffffffffffffffffffffffffffffffffff909316602085015263ffffffff9091169183019190915260608201526080016100c5565b61012d61017b366004611a9e565b6107fe565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6100b56101dc36600461190a565b6109ef565b60008313806101f05750600082135b6101f957600080fd5b60008061020583610bd9565b915091506102347f00000000000000000000000000000000000000000000000000000000000000008383610bfa565b506000806000808813610280578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610878961027b90611ae9565b6102ba565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161088886102ba90611ae9565b92509250925060006102cc8686610c17565b90506000808273ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa15801561031c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103409190611b45565b505050505091509150851561036657604051848152826020820152816040820152606081fd5b6000541561037c57600054841461037c57600080fd5b604051858152826020820152816040820152606081fd5b600060608060006103a386610c55565b67ffffffffffffffff8111156103bb576103bb6117a0565b6040519080825280602002602001820160405280156103e4578160200160208202803683370190505b5092506103f086610c55565b67ffffffffffffffff811115610408576104086117a0565b604051908082528060200260200182016040528015610431578160200160208202803683370190505b50915060005b60008061044389610bd9565b915091506000806000806104b960405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018e8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525061059a565b9350935093509350828a88815181106104d4576104d4611bdf565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508189888151811061052157610521611bdf565b602002602001019063ffffffff16908163ffffffff1681525050839b50808861054a9190611c0e565b97508661055681611c21565b9750506105628d610c70565b15610577576105708d610c93565b9c50610586565b8b9a5050505050505050610591565b505050505050610437565b92959194509250565b6020810151815160009182918291829173ffffffffffffffffffffffffffffffffffffffff808316908216109183916105d291610c17565b9050866060015173ffffffffffffffffffffffffffffffffffffffff166000036105ff5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb08308561062f8c60400151610caf565b61063890611ae9565b60608d015173ffffffffffffffffffffffffffffffffffffffff1615610662578c6060015161069b565b8761068b57610686600173fffd8963efd1fc6a506488495d951d5263988d26611c59565b61069b565b61069b6401000276a36001611c8d565b6020808f01518f516040516106e69301606092831b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811682529190921b16601482015260280190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610715959493929190611d28565b60408051808303816000875af192505050801561076d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261076a91810190611d7a565b60015b6107f1573d80801561079b576040519150601f19603f3d011682016040523d82523d6000602084013e6107a0565b606091505b505a6107ac9083611d9e565b9450886060015173ffffffffffffffffffffffffffffffffffffffff166000036107d557600080555b6107e0818487610cc3565b9750975097509750505050506107f7565b50505050505b9193509193565b6020810151815160009182918291829173ffffffffffffffffffffffffffffffffffffffff8083169082161091839161083691610c17565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856108688c60400151610caf565b60608d015173ffffffffffffffffffffffffffffffffffffffff1615610892578c606001516108cb565b876108bb576108b6600173fffd8963efd1fc6a506488495d951d5263988d26611c59565b6108cb565b6108cb6401000276a36001611c8d565b8d600001518e6020015160405160200161091c929190606092831b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811682529190921b16601482015260280190565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161094b959493929190611d28565b60408051808303816000875af19250505080156109a3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109a091810190611d7a565b60015b6107f1573d8080156109d1576040519150601f19603f3d011682016040523d82523d6000602084013e6109d6565b606091505b505a6109e29083611d9e565b94506107e0818487610cc3565b600060608060006109ff86610c55565b67ffffffffffffffff811115610a1757610a176117a0565b604051908082528060200260200182016040528015610a40578160200160208202803683370190505b509250610a4c86610c55565b67ffffffffffffffff811115610a6457610a646117a0565b604051908082528060200260200182016040528015610a8d578160200160208202803683370190505b50915060005b600080610a9f89610bd9565b91509150600080600080610b1560405180608001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018e8152602001600073ffffffffffffffffffffffffffffffffffffffff168152506107fe565b9350935093509350828a8881518110610b3057610b30611bdf565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081898881518110610b7d57610b7d611bdf565b602002602001019063ffffffff16908163ffffffff1681525050839b508088610ba69190611c0e565b975086610bb281611c21565b975050610bbe8d610c70565b1561057757610bcc8d610c93565b9c50505050505050610a93565b600080610be68382610d88565b9150610bf3836014610d88565b9050915091565b6000610c0f84610c0a8585610e1d565b610e98565b949350505050565b6000610c4c7f0000000000000000000000000000000000000000000000000000000000000000610c478585610e1d565b610ec8565b90505b92915050565b60006014808351610c669190611d9e565b610c4f9190611de0565b60006014610c7e8180611c0e565b610c889190611c0e565b825110159050919050565b6060610c4f6014808451610ca79190611d9e565b8491906110a6565b806000811215610cbe57600080fd5b919050565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611b45565b50939650610d5094508d935061122092505050565b91975095509050610d7873ffffffffffffffffffffffffffffffffffffffff89168383611308565b9350869250505093509350935093565b6000610d95826014611c0e565b83511015610e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064015b60405180910390fd5b5001602001516c01000000000000000000000000900490565b60408051808201909152600080825260208201528173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115610e69579091905b506040805180820190915273ffffffffffffffffffffffffffffffffffffffff92831681529116602082015290565b6000610ea48383610ec8565b90503373ffffffffffffffffffffffffffffffffffffffff821614610c4f57600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610dfb565b8282600001518360200151604051602001610fa592919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290528051602091820120611069939290917fa360004fb86ddf4cd7fe9aa67d0c6a7f7812d9069142659003dc503e1d7d241f91017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b6060816110b481601f611c0e565b101561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610dfb565b6111268284611c0e565b84511015611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610dfb565b6060821580156111af5760405191506000825260208201604052611217565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156111e85780518352602092830192016111d0565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600080600083516060146112e75760448451101561129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f556e6578706563746564206572726f72000000000000000000000000000000006044820152606401610dfb565b600484019350838060200190518101906112b49190611df4565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9190611e6b565b838060200190518101906112fb9190611e7e565b9250925092509193909250565b6000808080808080600289900b60081d816113256101008c611ebc565b905060028a900b60081d600061133d6101008d611ebc565b905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff1663c677e3e0856040518263ffffffff1660e01b815260040161138b919060019190910b815260200190565b602060405180830381865afa1580156113a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cc9190611ede565b1611801561145357508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114449190611ef7565b61144e908d611ebc565b60020b155b801561146457508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff1663c677e3e0876040518263ffffffff1660e01b81526004016114b2919060019190910b815260200190565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f39190611ede565b1611801561157a57508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190611ef7565b611575908e611ebc565b60020b155b801561158b57508b60020b8d60020b125b95508160010b8460010b12806115b757508160010b8460010b1480156115b757508060ff168360ff1611155b156115cd578399508297508198508096506115da565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b1361173e578560010b8760010b036116555761162b8460ff611f12565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff919091161c165b6040517fc677e3e0000000000000000000000000000000000000000000000000000000008152600188900b6004820152600090829073ffffffffffffffffffffffffffffffffffffffff8e169063c677e3e090602401602060405180830381865afa1580156116c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ec9190611ede565b1690506116f881611774565b6117069061ffff168a611f2b565b98508761171281611f48565b9850507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050611606565b81156117525761174f600189611f68565b97505b821561176657611763600189611f68565b97505b505050505050509392505050565b6000805b8215610c4f578061178881611f85565b91506117979050600184611d9e565b83169250611778565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611816576118166117a0565b604052919050565b600067ffffffffffffffff821115611838576118386117a0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261187557600080fd5b81356118886118838261181e565b6117cf565b81815284602083860101111561189d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156118cf57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156118f457600080fd5b61190086828701611864565b9150509250925092565b6000806040838503121561191d57600080fd5b823567ffffffffffffffff81111561193457600080fd5b61194085828601611864565b95602094909401359450505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156119a657845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611974565b50508481036040860152865180825290820192508187019060005b818110156119e357825163ffffffff16855293830193918301916001016119c1565b5050505060609290920192909252949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611a1b57600080fd5b50565b600060808284031215611a3057600080fd5b6040516080810181811067ffffffffffffffff82111715611a5357611a536117a0565b6040529050808235611a64816119f9565b81526020830135611a74816119f9565b6020820152604083810135908201526060830135611a91816119f9565b6060919091015292915050565b600060808284031215611ab057600080fd5b610c4c8383611a1e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007f80000000000000000000000000000000000000000000000000000000000000008203611b1a57611b1a611aba565b5060000390565b8051600281900b8114610cbe57600080fd5b805161ffff81168114610cbe57600080fd5b600080600080600080600060e0888a031215611b6057600080fd5b8751611b6b816119f9565b9650611b7960208901611b21565b9550611b8760408901611b21565b9450611b9560608901611b33565b9350611ba360808901611b33565b925060a088015160ff81168114611bb957600080fd5b60c08901519092508015158114611bcf57600080fd5b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610c4f57610c4f611aba565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c5257611c52611aba565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff828116828216039080821115611c8657611c86611aba565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff818116838216019080821115611c8657611c86611aba565b60005b83811015611cd5578181015183820152602001611cbd565b50506000910152565b60008151808452611cf6816020860160208601611cba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611d6f60a0830184611cde565b979650505050505050565b60008060408385031215611d8d57600080fd5b505080516020909101519092909150565b81810381811115610c4f57610c4f611aba565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611def57611def611db1565b500490565b600060208284031215611e0657600080fd5b815167ffffffffffffffff811115611e1d57600080fd5b8201601f81018413611e2e57600080fd5b8051611e3c6118838261181e565b818152856020838501011115611e5157600080fd5b611e62826020830160208601611cba565b95945050505050565b602081526000610c4c6020830184611cde565b600080600060608486031215611e9357600080fd5b835192506020840151611ea5816119f9565b9150611eb360408501611b21565b90509250925092565b60008260020b80611ecf57611ecf611db1565b808360020b0791505092915050565b600060208284031215611ef057600080fd5b5051919050565b600060208284031215611f0957600080fd5b610c4c82611b21565b60ff8281168282160390811115610c4f57610c4f611aba565b63ffffffff818116838216019080821115611c8657611c86611aba565b60008160010b617fff8103611f5f57611f5f611aba565b60010192915050565b63ffffffff828116828216039080821115611c8657611c86611aba565b600061ffff808316818103611f9c57611f9c611aba565b600101939250505056fea164736f6c6343000811000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80635e5e6e0f1161005b5780635e5e6e0f1461016d5780638af3ac8514610180578063c45a0155146101a7578063cdca1753146101ce57600080fd5b80632c8958f61461008d5780632f80bb1d146100a25780633119049a146100ce5780635877c9b91461011a575b600080fd5b6100a061009b3660046118ba565b6101e1565b005b6100b56100b036600461190a565b610393565b6040516100c5949392919061194f565b60405180910390f35b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c5565b61012d610128366004611a9e565b61059a565b6040805194855273ffffffffffffffffffffffffffffffffffffffff909316602085015263ffffffff9091169183019190915260608201526080016100c5565b61012d61017b366004611a9e565b6107fe565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6100b56101dc36600461190a565b6109ef565b60008313806101f05750600082135b6101f957600080fd5b60008061020583610bd9565b915091506102347f00000000000000000000000000000000000000000000000000000000000000008383610bfa565b506000806000808813610280578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610878961027b90611ae9565b6102ba565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161088886102ba90611ae9565b92509250925060006102cc8686610c17565b90506000808273ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa15801561031c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103409190611b45565b505050505091509150851561036657604051848152826020820152816040820152606081fd5b6000541561037c57600054841461037c57600080fd5b604051858152826020820152816040820152606081fd5b600060608060006103a386610c55565b67ffffffffffffffff8111156103bb576103bb6117a0565b6040519080825280602002602001820160405280156103e4578160200160208202803683370190505b5092506103f086610c55565b67ffffffffffffffff811115610408576104086117a0565b604051908082528060200260200182016040528015610431578160200160208202803683370190505b50915060005b60008061044389610bd9565b915091506000806000806104b960405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018e8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525061059a565b9350935093509350828a88815181106104d4576104d4611bdf565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508189888151811061052157610521611bdf565b602002602001019063ffffffff16908163ffffffff1681525050839b50808861054a9190611c0e565b97508661055681611c21565b9750506105628d610c70565b15610577576105708d610c93565b9c50610586565b8b9a5050505050505050610591565b505050505050610437565b92959194509250565b6020810151815160009182918291829173ffffffffffffffffffffffffffffffffffffffff808316908216109183916105d291610c17565b9050866060015173ffffffffffffffffffffffffffffffffffffffff166000036105ff5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb08308561062f8c60400151610caf565b61063890611ae9565b60608d015173ffffffffffffffffffffffffffffffffffffffff1615610662578c6060015161069b565b8761068b57610686600173fffd8963efd1fc6a506488495d951d5263988d26611c59565b61069b565b61069b6401000276a36001611c8d565b6020808f01518f516040516106e69301606092831b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811682529190921b16601482015260280190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610715959493929190611d28565b60408051808303816000875af192505050801561076d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261076a91810190611d7a565b60015b6107f1573d80801561079b576040519150601f19603f3d011682016040523d82523d6000602084013e6107a0565b606091505b505a6107ac9083611d9e565b9450886060015173ffffffffffffffffffffffffffffffffffffffff166000036107d557600080555b6107e0818487610cc3565b9750975097509750505050506107f7565b50505050505b9193509193565b6020810151815160009182918291829173ffffffffffffffffffffffffffffffffffffffff8083169082161091839161083691610c17565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856108688c60400151610caf565b60608d015173ffffffffffffffffffffffffffffffffffffffff1615610892578c606001516108cb565b876108bb576108b6600173fffd8963efd1fc6a506488495d951d5263988d26611c59565b6108cb565b6108cb6401000276a36001611c8d565b8d600001518e6020015160405160200161091c929190606092831b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811682529190921b16601482015260280190565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161094b959493929190611d28565b60408051808303816000875af19250505080156109a3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109a091810190611d7a565b60015b6107f1573d8080156109d1576040519150601f19603f3d011682016040523d82523d6000602084013e6109d6565b606091505b505a6109e29083611d9e565b94506107e0818487610cc3565b600060608060006109ff86610c55565b67ffffffffffffffff811115610a1757610a176117a0565b604051908082528060200260200182016040528015610a40578160200160208202803683370190505b509250610a4c86610c55565b67ffffffffffffffff811115610a6457610a646117a0565b604051908082528060200260200182016040528015610a8d578160200160208202803683370190505b50915060005b600080610a9f89610bd9565b91509150600080600080610b1560405180608001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018e8152602001600073ffffffffffffffffffffffffffffffffffffffff168152506107fe565b9350935093509350828a8881518110610b3057610b30611bdf565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081898881518110610b7d57610b7d611bdf565b602002602001019063ffffffff16908163ffffffff1681525050839b508088610ba69190611c0e565b975086610bb281611c21565b975050610bbe8d610c70565b1561057757610bcc8d610c93565b9c50505050505050610a93565b600080610be68382610d88565b9150610bf3836014610d88565b9050915091565b6000610c0f84610c0a8585610e1d565b610e98565b949350505050565b6000610c4c7f0000000000000000000000000000000000000000000000000000000000000000610c478585610e1d565b610ec8565b90505b92915050565b60006014808351610c669190611d9e565b610c4f9190611de0565b60006014610c7e8180611c0e565b610c889190611c0e565b825110159050919050565b6060610c4f6014808451610ca79190611d9e565b8491906110a6565b806000811215610cbe57600080fd5b919050565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611b45565b50939650610d5094508d935061122092505050565b91975095509050610d7873ffffffffffffffffffffffffffffffffffffffff89168383611308565b9350869250505093509350935093565b6000610d95826014611c0e565b83511015610e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064015b60405180910390fd5b5001602001516c01000000000000000000000000900490565b60408051808201909152600080825260208201528173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115610e69579091905b506040805180820190915273ffffffffffffffffffffffffffffffffffffffff92831681529116602082015290565b6000610ea48383610ec8565b90503373ffffffffffffffffffffffffffffffffffffffff821614610c4f57600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610dfb565b8282600001518360200151604051602001610fa592919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290528051602091820120611069939290917fa360004fb86ddf4cd7fe9aa67d0c6a7f7812d9069142659003dc503e1d7d241f91017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b6060816110b481601f611c0e565b101561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610dfb565b6111268284611c0e565b84511015611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610dfb565b6060821580156111af5760405191506000825260208201604052611217565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156111e85780518352602092830192016111d0565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600080600083516060146112e75760448451101561129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f556e6578706563746564206572726f72000000000000000000000000000000006044820152606401610dfb565b600484019350838060200190518101906112b49190611df4565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9190611e6b565b838060200190518101906112fb9190611e7e565b9250925092509193909250565b6000808080808080600289900b60081d816113256101008c611ebc565b905060028a900b60081d600061133d6101008d611ebc565b905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff1663c677e3e0856040518263ffffffff1660e01b815260040161138b919060019190910b815260200190565b602060405180830381865afa1580156113a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cc9190611ede565b1611801561145357508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114449190611ef7565b61144e908d611ebc565b60020b155b801561146457508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff1663c677e3e0876040518263ffffffff1660e01b81526004016114b2919060019190910b815260200190565b602060405180830381865afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f39190611ede565b1611801561157a57508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190611ef7565b611575908e611ebc565b60020b155b801561158b57508b60020b8d60020b125b95508160010b8460010b12806115b757508160010b8460010b1480156115b757508060ff168360ff1611155b156115cd578399508297508198508096506115da565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b1361173e578560010b8760010b036116555761162b8460ff611f12565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff919091161c165b6040517fc677e3e0000000000000000000000000000000000000000000000000000000008152600188900b6004820152600090829073ffffffffffffffffffffffffffffffffffffffff8e169063c677e3e090602401602060405180830381865afa1580156116c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ec9190611ede565b1690506116f881611774565b6117069061ffff168a611f2b565b98508761171281611f48565b9850507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050611606565b81156117525761174f600189611f68565b97505b821561176657611763600189611f68565b97505b505050505050509392505050565b6000805b8215610c4f578061178881611f85565b91506117979050600184611d9e565b83169250611778565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611816576118166117a0565b604052919050565b600067ffffffffffffffff821115611838576118386117a0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261187557600080fd5b81356118886118838261181e565b6117cf565b81815284602083860101111561189d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156118cf57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156118f457600080fd5b61190086828701611864565b9150509250925092565b6000806040838503121561191d57600080fd5b823567ffffffffffffffff81111561193457600080fd5b61194085828601611864565b95602094909401359450505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156119a657845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611974565b50508481036040860152865180825290820192508187019060005b818110156119e357825163ffffffff16855293830193918301916001016119c1565b5050505060609290920192909252949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611a1b57600080fd5b50565b600060808284031215611a3057600080fd5b6040516080810181811067ffffffffffffffff82111715611a5357611a536117a0565b6040529050808235611a64816119f9565b81526020830135611a74816119f9565b6020820152604083810135908201526060830135611a91816119f9565b6060919091015292915050565b600060808284031215611ab057600080fd5b610c4c8383611a1e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007f80000000000000000000000000000000000000000000000000000000000000008203611b1a57611b1a611aba565b5060000390565b8051600281900b8114610cbe57600080fd5b805161ffff81168114610cbe57600080fd5b600080600080600080600060e0888a031215611b6057600080fd5b8751611b6b816119f9565b9650611b7960208901611b21565b9550611b8760408901611b21565b9450611b9560608901611b33565b9350611ba360808901611b33565b925060a088015160ff81168114611bb957600080fd5b60c08901519092508015158114611bcf57600080fd5b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610c4f57610c4f611aba565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c5257611c52611aba565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff828116828216039080821115611c8657611c86611aba565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff818116838216019080821115611c8657611c86611aba565b60005b83811015611cd5578181015183820152602001611cbd565b50506000910152565b60008151808452611cf6816020860160208601611cba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611d6f60a0830184611cde565b979650505050505050565b60008060408385031215611d8d57600080fd5b505080516020909101519092909150565b81810381811115610c4f57610c4f611aba565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611def57611def611db1565b500490565b600060208284031215611e0657600080fd5b815167ffffffffffffffff811115611e1d57600080fd5b8201601f81018413611e2e57600080fd5b8051611e3c6118838261181e565b818152856020838501011115611e5157600080fd5b611e62826020830160208601611cba565b95945050505050565b602081526000610c4c6020830184611cde565b600080600060608486031215611e9357600080fd5b835192506020840151611ea5816119f9565b9150611eb360408501611b21565b90509250925092565b60008260020b80611ecf57611ecf611db1565b808360020b0791505092915050565b600060208284031215611ef057600080fd5b5051919050565b600060208284031215611f0957600080fd5b610c4c82611b21565b60ff8281168282160390811115610c4f57610c4f611aba565b63ffffffff818116838216019080821115611c8657611c86611aba565b60008160010b617fff8103611f5f57611f5f611aba565b60010192915050565b63ffffffff828116828216039080821115611c8657611c86611aba565b600061ffff808316818103611f9c57611f9c611aba565b600101939250505056fea164736f6c6343000811000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
