{
  "_format": "hh-sol-artifact-1",
  "contractName": "V3Migrator",
  "sourceName": "contracts/V3Migrator.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WNativeToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_nonfungiblePositionManager",
          "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": "address",
          "name": "token0",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token1",
          "type": "address"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        }
      ],
      "name": "createAndInitializePoolIfNecessary",
      "outputs": [
        {
          "internalType": "address",
          "name": "pool",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityToMigrate",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "percentageToMigrate",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "amount0Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Min",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "refundAsNative",
              "type": "bool"
            }
          ],
          "internalType": "struct IV3Migrator.MigrateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nonfungiblePositionManager",
      "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": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitAllowed",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitAllowedIfNecessary",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitIfNecessary",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6101006040523480156200001257600080fd5b5060405162001fb738038062001fb7833981016040819052620000359162000075565b6001600160a01b03938416608052831660a05290821660c0521660e052620000d2565b80516001600160a01b03811681146200007057600080fd5b919050565b600080600080608085870312156200008c57600080fd5b620000978562000058565b9350620000a76020860162000058565b9250620000b76040860162000058565b9150620000c76060860162000058565b905092959194509250565b60805160a05160c05160e051611e5f620001586000396000818161028d015281816109c801528181610a0201528181610a2c0152610bde01526000818160dd0152818161020601528181610c4201528181610cbe01528181610dbb0152610e37015260006101820152600081816102d40152818161044b01526105200152611e5f6000f3fe6080604052600436106100c05760003560e01c8063a4a78f0c11610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063a4a78f0c14610248578063ac9650d81461025b578063b44a27221461027b57600080fd5b806351246d6e116100a557806351246d6e146101e15780638af3ac85146101f45780638be74fb61461022857600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc3660046116b0565b610309565b6101a46101ef36600461170c565b6103c4565b34801561020057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b34801561023457600080fd5b50610169610243366004611757565b6106e3565b6101696102563660046116b0565b610ed5565b61026e610269366004611770565b610fa7565b6040516101c59190611853565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd3660046116b0565b611119565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696103043660046116b0565b6111bf565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106103fe57600080fd5b6040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d9a641e190604401602060405180830381865afa158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b691906118d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610617576040517fe343361500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e3433615906044016020604051808303816000875af1158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d91906118d3565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063f637731d90602401600060405180830381600087803b1580156105fa57600080fd5b505af115801561060e573d6000803e3d6000fd5b505050506106dc565b60006106388273ffffffffffffffffffffffffffffffffffffffff1661123c565b90508073ffffffffffffffffffffffffffffffffffffffff166000036106da576040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283169063f637731d90602401600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050505b505b9392505050565b60006106f560608301604084016118f0565b60ff161161075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b606461077160608301604084016118f0565b60ff1611156107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6107e9602082018261190d565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610812602085018561190d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af115801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190611938565b506000806108c3602084018461190d565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190611955565b90925090506000606461096d60608601604087016118f0565b61097a9060ff16856119a8565b61098491906119c5565b90506000606461099a60608701604088016118f0565b6109a79060ff16856119a8565b6109b191906119c5565b90506109ed6109c6608087016060880161190d565b7f0000000000000000000000000000000000000000000000000000000000000000846112ba565b610a27610a0060a087016080880161190d565b7f0000000000000000000000000000000000000000000000000000000000000000836112ba565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639cc1a2836040518061014001604052808a6060016020810190610a85919061190d565b73ffffffffffffffffffffffffffffffffffffffff168152602001610ab060a08c0160808d0161190d565b73ffffffffffffffffffffffffffffffffffffffff168152602001610adb60c08c0160a08d01611a0f565b60020b8152602001610af360e08c0160c08d01611a0f565b60020b8152602081018890526040810187905260e08b013560608201526101008b0135608082015260a001610b306101408c016101208d0161190d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61014001358152506040518263ffffffff1660e01b8152600401610b709190611a2c565b6080604051808303816000875af1158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb39190611afe565b93509350505085821015610d5a5783821015610c0457610c04610bdc6080890160608a0161190d565b7f000000000000000000000000000000000000000000000000000000000000000060006112ba565b6000610c108388611b51565b9050610c2461018089016101608a01611b64565b8015610c8a575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610c7260808a0160608b0161190d565b73ffffffffffffffffffffffffffffffffffffffff16145b15610d3e576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b50505050610d39338261142a565b610d58565b610d58610d5160808a0160608b0161190d565b3383611513565b505b84811015610ecc5782811015610d7d57610d7d610bdc60a0890160808a0161190d565b6000610d898287611b51565b9050610d9d61018089016101608a01611b64565b8015610e03575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610deb60a08a0160808b0161190d565b73ffffffffffffffffffffffffffffffffffffffff16145b15610eb7576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b50505050610eb2338261142a565b610eca565b610eca610d5160a08a0160808b0161190d565b505b50505050505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa158015610f67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8b9190611b81565b1015610f9f57610f9f868686868686610309565b505050505050565b60608167ffffffffffffffff811115610fc257610fc2611b9a565b604051908082528060200260200182016040528015610ff557816020015b6060815260200190600190039081610fe05790505b50905060005b82811015611112576000803086868581811061101957611019611bc9565b905060200281019061102b9190611bf8565b604051611039929190611c64565b600060405180830381855af49150503d8060008114611074576040519150601f19603f3d011682016040523d82523d6000602084013e611079565b606091505b5091509150816110df5760448151101561109257600080fd5b600481019050808060200190518101906110ac9190611c74565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101609190611d3f565b808484815181106110f2576110f2611bc9565b60200260200101819052505050808061110a90611d52565b915050610ffb565b5092915050565b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152859073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af9190611b81565b1015610f9f57610f9f8686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad9190611da1565b5094979650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916113519190611e36565b6000604051808303816000865af19150503d806000811461138e576040519150601f19603f3d011682016040523d82523d6000602084013e611393565b606091505b50915091508180156113bd5750805115806113bd5750808060200190518101906113bd9190611938565b611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114619190611e36565b60006040518083038185875af1925050503d806000811461149e576040519150601f19603f3d011682016040523d82523d6000602084013e6114a3565b606091505b505090508061150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916115aa9190611e36565b6000604051808303816000865af19150503d80600081146115e7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ec565b606091505b50915091508180156116165750805115806116165750808060200190518101906116169190611938565b611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b73ffffffffffffffffffffffffffffffffffffffff8116811461169e57600080fd5b50565b60ff8116811461169e57600080fd5b60008060008060008060c087890312156116c957600080fd5b86356116d48161167c565b9550602087013594506040870135935060608701356116f2816116a1565b9598949750929560808101359460a0909101359350915050565b60008060006060848603121561172157600080fd5b833561172c8161167c565b9250602084013561173c8161167c565b9150604084013561174c8161167c565b809150509250925092565b6000610180828403121561176a57600080fd5b50919050565b6000806020838503121561178357600080fd5b823567ffffffffffffffff8082111561179b57600080fd5b818501915085601f8301126117af57600080fd5b8135818111156117be57600080fd5b8660208260051b85010111156117d357600080fd5b60209290920196919550909350505050565b60005b838110156118005781810151838201526020016117e8565b50506000910152565b600081518084526118218160208601602086016117e5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526118b4858351611809565b9450928501929085019060010161187a565b5092979650505050505050565b6000602082840312156118e557600080fd5b81516106dc8161167c565b60006020828403121561190257600080fd5b81356106dc816116a1565b60006020828403121561191f57600080fd5b81356106dc8161167c565b801515811461169e57600080fd5b60006020828403121561194a57600080fd5b81516106dc8161192a565b6000806040838503121561196857600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176119bf576119bf611979565b92915050565b6000826119fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b811461169e57600080fd5b600060208284031215611a2157600080fd5b81356106dc81611a00565b815173ffffffffffffffffffffffffffffffffffffffff16815261014081016020830151611a72602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611a87604084018260020b9052565b506060830151611a9c606084018260020b9052565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151611aed8285018273ffffffffffffffffffffffffffffffffffffffff169052565b505061012092830151919092015290565b60008060008060808587031215611b1457600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611b3b57600080fd5b6040860151606090960151949790965092505050565b818103818111156119bf576119bf611979565b600060208284031215611b7657600080fd5b81356106dc8161192a565b600060208284031215611b9357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c2d57600080fd5b83018035915067ffffffffffffffff821115611c4857600080fd5b602001915036819003821315611c5d57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215611c8657600080fd5b815167ffffffffffffffff80821115611c9e57600080fd5b818401915084601f830112611cb257600080fd5b815181811115611cc457611cc4611b9a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611d0a57611d0a611b9a565b81604052828152876020848701011115611d2357600080fd5b611d348360208301602088016117e5565b979650505050505050565b6020815260006106dc6020830184611809565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d8357611d83611979565b5060010190565b805161ffff81168114611d9c57600080fd5b919050565b600080600080600080600060e0888a031215611dbc57600080fd5b8751611dc78161167c565b6020890151909750611dd881611a00565b6040890151909650611de981611a00565b9450611df760608901611d8a565b9350611e0560808901611d8a565b925060a0880151611e15816116a1565b60c0890151909250611e268161192a565b8091505092959891949750929550565b60008251611e488184602087016117e5565b919091019291505056fea164736f6c6343000811000a",
  "deployedBytecode": "0x6080604052600436106100c05760003560e01c8063a4a78f0c11610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063a4a78f0c14610248578063ac9650d81461025b578063b44a27221461027b57600080fd5b806351246d6e116100a557806351246d6e146101e15780638af3ac85146101f45780638be74fb61461022857600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc3660046116b0565b610309565b6101a46101ef36600461170c565b6103c4565b34801561020057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b34801561023457600080fd5b50610169610243366004611757565b6106e3565b6101696102563660046116b0565b610ed5565b61026e610269366004611770565b610fa7565b6040516101c59190611853565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd3660046116b0565b611119565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696103043660046116b0565b6111bf565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106103fe57600080fd5b6040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d9a641e190604401602060405180830381865afa158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b691906118d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610617576040517fe343361500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e3433615906044016020604051808303816000875af1158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d91906118d3565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063f637731d90602401600060405180830381600087803b1580156105fa57600080fd5b505af115801561060e573d6000803e3d6000fd5b505050506106dc565b60006106388273ffffffffffffffffffffffffffffffffffffffff1661123c565b90508073ffffffffffffffffffffffffffffffffffffffff166000036106da576040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283169063f637731d90602401600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050505b505b9392505050565b60006106f560608301604084016118f0565b60ff161161075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b606461077160608301604084016118f0565b60ff1611156107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6107e9602082018261190d565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610812602085018561190d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af115801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190611938565b506000806108c3602084018461190d565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190611955565b90925090506000606461096d60608601604087016118f0565b61097a9060ff16856119a8565b61098491906119c5565b90506000606461099a60608701604088016118f0565b6109a79060ff16856119a8565b6109b191906119c5565b90506109ed6109c6608087016060880161190d565b7f0000000000000000000000000000000000000000000000000000000000000000846112ba565b610a27610a0060a087016080880161190d565b7f0000000000000000000000000000000000000000000000000000000000000000836112ba565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639cc1a2836040518061014001604052808a6060016020810190610a85919061190d565b73ffffffffffffffffffffffffffffffffffffffff168152602001610ab060a08c0160808d0161190d565b73ffffffffffffffffffffffffffffffffffffffff168152602001610adb60c08c0160a08d01611a0f565b60020b8152602001610af360e08c0160c08d01611a0f565b60020b8152602081018890526040810187905260e08b013560608201526101008b0135608082015260a001610b306101408c016101208d0161190d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61014001358152506040518263ffffffff1660e01b8152600401610b709190611a2c565b6080604051808303816000875af1158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb39190611afe565b93509350505085821015610d5a5783821015610c0457610c04610bdc6080890160608a0161190d565b7f000000000000000000000000000000000000000000000000000000000000000060006112ba565b6000610c108388611b51565b9050610c2461018089016101608a01611b64565b8015610c8a575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610c7260808a0160608b0161190d565b73ffffffffffffffffffffffffffffffffffffffff16145b15610d3e576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b50505050610d39338261142a565b610d58565b610d58610d5160808a0160608b0161190d565b3383611513565b505b84811015610ecc5782811015610d7d57610d7d610bdc60a0890160808a0161190d565b6000610d898287611b51565b9050610d9d61018089016101608a01611b64565b8015610e03575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610deb60a08a0160808b0161190d565b73ffffffffffffffffffffffffffffffffffffffff16145b15610eb7576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b50505050610eb2338261142a565b610eca565b610eca610d5160a08a0160808b0161190d565b505b50505050505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa158015610f67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8b9190611b81565b1015610f9f57610f9f868686868686610309565b505050505050565b60608167ffffffffffffffff811115610fc257610fc2611b9a565b604051908082528060200260200182016040528015610ff557816020015b6060815260200190600190039081610fe05790505b50905060005b82811015611112576000803086868581811061101957611019611bc9565b905060200281019061102b9190611bf8565b604051611039929190611c64565b600060405180830381855af49150503d8060008114611074576040519150601f19603f3d011682016040523d82523d6000602084013e611079565b606091505b5091509150816110df5760448151101561109257600080fd5b600481019050808060200190518101906110ac9190611c74565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101609190611d3f565b808484815181106110f2576110f2611bc9565b60200260200101819052505050808061110a90611d52565b915050610ffb565b5092915050565b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152859073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa15801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af9190611b81565b1015610f9f57610f9f8686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad9190611da1565b5094979650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916113519190611e36565b6000604051808303816000865af19150503d806000811461138e576040519150601f19603f3d011682016040523d82523d6000602084013e611393565b606091505b50915091508180156113bd5750805115806113bd5750808060200190518101906113bd9190611938565b611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114619190611e36565b60006040518083038185875af1925050503d806000811461149e576040519150601f19603f3d011682016040523d82523d6000602084013e6114a3565b606091505b505090508061150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916115aa9190611e36565b6000604051808303816000865af19150503d80600081146115e7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ec565b606091505b50915091508180156116165750805115806116165750808060200190518101906116169190611938565b611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b73ffffffffffffffffffffffffffffffffffffffff8116811461169e57600080fd5b50565b60ff8116811461169e57600080fd5b60008060008060008060c087890312156116c957600080fd5b86356116d48161167c565b9550602087013594506040870135935060608701356116f2816116a1565b9598949750929560808101359460a0909101359350915050565b60008060006060848603121561172157600080fd5b833561172c8161167c565b9250602084013561173c8161167c565b9150604084013561174c8161167c565b809150509250925092565b6000610180828403121561176a57600080fd5b50919050565b6000806020838503121561178357600080fd5b823567ffffffffffffffff8082111561179b57600080fd5b818501915085601f8301126117af57600080fd5b8135818111156117be57600080fd5b8660208260051b85010111156117d357600080fd5b60209290920196919550909350505050565b60005b838110156118005781810151838201526020016117e8565b50506000910152565b600081518084526118218160208601602086016117e5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526118b4858351611809565b9450928501929085019060010161187a565b5092979650505050505050565b6000602082840312156118e557600080fd5b81516106dc8161167c565b60006020828403121561190257600080fd5b81356106dc816116a1565b60006020828403121561191f57600080fd5b81356106dc8161167c565b801515811461169e57600080fd5b60006020828403121561194a57600080fd5b81516106dc8161192a565b6000806040838503121561196857600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176119bf576119bf611979565b92915050565b6000826119fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b811461169e57600080fd5b600060208284031215611a2157600080fd5b81356106dc81611a00565b815173ffffffffffffffffffffffffffffffffffffffff16815261014081016020830151611a72602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611a87604084018260020b9052565b506060830151611a9c606084018260020b9052565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151611aed8285018273ffffffffffffffffffffffffffffffffffffffff169052565b505061012092830151919092015290565b60008060008060808587031215611b1457600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611b3b57600080fd5b6040860151606090960151949790965092505050565b818103818111156119bf576119bf611979565b600060208284031215611b7657600080fd5b81356106dc8161192a565b600060208284031215611b9357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c2d57600080fd5b83018035915067ffffffffffffffff821115611c4857600080fd5b602001915036819003821315611c5d57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215611c8657600080fd5b815167ffffffffffffffff80821115611c9e57600080fd5b818401915084601f830112611cb257600080fd5b815181811115611cc457611cc4611b9a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611d0a57611d0a611b9a565b81604052828152876020848701011115611d2357600080fd5b611d348360208301602088016117e5565b979650505050505050565b6020815260006106dc6020830184611809565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d8357611d83611979565b5060010190565b805161ffff81168114611d9c57600080fd5b919050565b600080600080600080600060e0888a031215611dbc57600080fd5b8751611dc78161167c565b6020890151909750611dd881611a00565b6040890151909650611de981611a00565b9450611df760608901611d8a565b9350611e0560808901611d8a565b925060a0880151611e15816116a1565b60c0890151909250611e268161192a565b8091505092959891949750929550565b60008251611e488184602087016117e5565b919091019291505056fea164736f6c6343000811000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
