{
  "name": "LongerVaultFactory",
  "compiler": "0.8.28+commit.7893614a",
  "settings": {
    "compilationTarget": {
      "src/LongerVaultFactory.sol": "LongerVaultFactory"
    },
    "evmVersion": "cancun",
    "libraries": {},
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "remappings": []
  },
  "abi": [
    {
      "type": "function",
      "name": "deploy",
      "inputs": [
        {
          "name": "initializer",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "poolId",
          "type": "bytes32",
          "internalType": "bytes32"
        },
        {
          "name": "currency0",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "currency1",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "recipients",
          "type": "address[]",
          "internalType": "address[]"
        },
        {
          "name": "phase0",
          "type": "uint16[]",
          "internalType": "uint16[]"
        },
        {
          "name": "phase1",
          "type": "uint16[]",
          "internalType": "uint16[]"
        },
        {
          "name": "transitionAt",
          "type": "uint64",
          "internalType": "uint64"
        },
        {
          "name": "salt",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "outputs": [
        {
          "name": "vault",
          "type": "address",
          "internalType": "contract LongerFeeVault"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "predict",
      "inputs": [
        {
          "name": "creator",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "salt",
          "type": "bytes32",
          "internalType": "bytes32"
        },
        {
          "name": "creationCodeHash",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "event",
      "name": "VaultCreated",
      "inputs": [
        {
          "name": "vault",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "creator",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "configHash",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    }
  ],
  "bytecode": "0x6080604052348015600e575f5ffd5b506121d18061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806306a19b6b14610038578063365aaf0d14610067575b5f5ffd5b61004b6100463660046102bb565b610102565b6040516001600160a01b03909116815260200160405180910390f35b61004b6100753660046103b7565b604080516001600160a01b038516602080830191909152818301859052825180830384018152606080840190945280519101206001600160f81b031960808301523090921b6bffffffffffffffffffffffff19166081820152609581019190915260b581018290525f9060d50160408051601f198184030181529190528051602090910120949350505050565b604080513360208201529081018290525f908190606001604051602081830303815290604052805190602001209050808e8e8e8e8e8e8e8e8e8e8e60405161014990610234565b61015d9b9a9998979695949392919061042e565b8190604051809103905ff590508015801561017a573d5f5f3e3d5ffd5b509150336001600160a01b0316826001600160a01b03167f58fb3f257023f6aabbc0b987a10e27817a4a7cf839e01adacb6de7a6a01a0e1a846001600160a01b031663e1f1176d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021291906104ea565b60405190815260200160405180910390a3509c9b505050505050505050505050565b611c9a8061050283390190565b80356001600160a01b0381168114610257575f5ffd5b919050565b5f5f83601f84011261026c575f5ffd5b50813567ffffffffffffffff811115610283575f5ffd5b6020830191508360208260051b850101111561029d575f5ffd5b9250929050565b803567ffffffffffffffff81168114610257575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101208d8f0312156102d7575f5ffd5b6102e08d610241565b9b5060208d01359a506102f560408e01610241565b995061030360608e01610241565b985067ffffffffffffffff60808e0135111561031d575f5ffd5b61032d8e60808f01358f0161025c565b909850965067ffffffffffffffff60a08e0135111561034a575f5ffd5b61035a8e60a08f01358f0161025c565b909650945067ffffffffffffffff60c08e01351115610377575f5ffd5b6103878e60c08f01358f0161025c565b909450925061039860e08e016102a4565b91505f6101008e01359050809150509295989b509295989b509295989b565b5f5f5f606084860312156103c9575f5ffd5b6103d284610241565b95602085013595506040909401359392505050565b8183526020830192505f815f5b8481101561042457813561ffff811680821461040e575f5ffd5b87525060209586019591909101906001016103f4565b5093949350505050565b6001600160a01b038c81168252602082018c90528a81166040830152891660608201526101006080820181905281018790525f886101208301825b8a811015610497576001600160a01b0361048284610241565b16825260209283019290910190600101610469565b5083810360a08501526104ab81898b6103e7565b91505082810360c08401526104c18186886103e7565b9150506104da60e083018467ffffffffffffffff169052565b9c9b505050505050505050505050565b5f602082840312156104fa575f5ffd5b505191905056fe610160604052348015610010575f5ffd5b50604051611c9a380380611c9a83398101604081905261002f916105fe565b83516001600160a01b0389163b1580610046575087155b806100635750856001600160a01b0316876001600160a01b031610155b8061006c575080155b806100775750600881115b80610083575080845114155b8061008f575080835114155b156100ad5760405163c52a9bd360e01b815260040160405180910390fd5b5f5f5f5b8381101561027e575f6001600160a01b03168882815181106100d5576100d56106da565b60200260200101516001600160a01b0316148061011c5750306001600160a01b0316888281518110610109576101096106da565b60200260200101516001600160a01b0316145b1561013a5760405163c52a9bd360e01b815260040160405180910390fd5b5f5b818110156101b057888281518110610156576101566106da565b60200260200101516001600160a01b0316898281518110610179576101796106da565b60200260200101516001600160a01b0316036101a85760405163c52a9bd360e01b815260040160405180910390fd5b60010161013c565b506001600160401b03851615801561020257508581815181106101d5576101d56106da565b602002602001015161ffff168782815181106101f3576101f36106da565b602002602001015161ffff1614155b156102205760405163c52a9bd360e01b815260040160405180910390fd5b868181518110610232576102326106da565b602002602001015161ffff168361024991906106ee565b925085818151811061025d5761025d6106da565b602002602001015161ffff168261027491906106ee565b91506001016100b1565b506127108214158061029257506127108114155b156102b05760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b03808c1660808190523f60a05260c08b905289811660e0528816610100526001600160401b0384166101205286516102f5905f9060208a0190610378565b5085516103099060019060208901906103db565b50845161031d9060029060208801906103db565b50468b8c6001600160a01b03163f8c8c8c8c8c8c8c60405160200161034b9a99989796959493929190610751565b60408051601f19818403018152919052805160209091012061014052506108209950505050505050505050565b828054828255905f5260205f209081019282156103cb579160200282015b828111156103cb57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610396565b506103d7929150610478565b5090565b828054828255905f5260205f2090600f016010900481019282156103cb579160200282015f5b8382111561044157835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610401565b801561046f5782816101000a81549061ffff0219169055600201602081600101049283019260010302610441565b50506103d79291505b5b808211156103d7575f8155600101610479565b80516001600160a01b03811681146104a2575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156104e3576104e36104a7565b604052919050565b5f6001600160401b03821115610503576105036104a7565b5060051b60200190565b5f82601f83011261051c575f5ffd5b815161052f61052a826104eb565b6104bb565b8082825260208201915060208360051b860101925085831115610550575f5ffd5b602085015b83811015610574576105668161048c565b835260209283019201610555565b5095945050505050565b5f82601f83011261058d575f5ffd5b815161059b61052a826104eb565b8082825260208201915060208360051b8601019250858311156105bc575f5ffd5b602085015b8381101561057457805161ffff811681146105da575f5ffd5b8352602092830192016105c1565b80516001600160401b03811681146104a2575f5ffd5b5f5f5f5f5f5f5f5f610100898b031215610616575f5ffd5b61061f8961048c565b60208a0151909850965061063560408a0161048c565b955061064360608a0161048c565b60808a01519095506001600160401b0381111561065e575f5ffd5b61066a8b828c0161050d565b60a08b015190955090506001600160401b03811115610687575f5ffd5b6106938b828c0161057e565b60c08b015190945090506001600160401b038111156106b0575f5ffd5b6106bc8b828c0161057e565b9250506106cb60e08a016105e8565b90509295985092959890939650565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561070d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8151808452602084019350602083015f5b8281101561074757815161ffff16865260209586019590910190600101610725565b5093949350505050565b8a81526001600160a01b038a8116602080840191909152604083018b9052606083018a9052888216608084015290871660a083015261014060c0830181905286519083018190525f9161016084019183918901825b828110156107cd5781516001600160a01b03168552602094850194909101906001016107a6565b5050505082810360e08401526107e38187610713565b90508281036101008401526107f88186610713565b9150506108116101208301846001600160401b03169052565b9b9a5050505050505050505050565b60805160a05160c05160e0516101005161012051610140516113b26108e85f395f61040501525f818161026a01528181610447015261047201525f818161014f0152818161051801528181610a0b01528181610c420152610d3e01525f81816102b6015281816104db015281816109cf01528181610c160152610d1401525f81816102210152818161092001528181610a8301528181610aec0152610b9701525f818161034701526108d401525f81816102e9015281816108b1015261094601526113b25ff3fe608060405260043610610108575f3560e01c806379f1232b11610092578063d1bc76a111610062578063d1bc76a114610369578063d4570c1c14610388578063dff1b87c146103be578063e1f1176d146103f4578063fff6cae914610427575f5ffd5b806379f1232b146102a55780639ce110d7146102d8578063a7838c8a1461030b578063c9862b1a14610336575f5ffd5b8063249d39e9116100d8578063249d39e9146101c957806326143609146101de5780633e0dc34e146102105780634641257d14610243578063649a42aa14610259575f5ffd5b80630e1b26c61461011357806310d737b81461013e578063117de2fd1461018957806322eabb8e146101b6575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061012761043b565b60405160ff90911681526020015b60405180910390f35b348015610149575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610135565b348015610194575f5ffd5b506101a86101a33660046110d0565b6104ae565b604051908152602001610135565b3480156101c1575f5ffd5b505f546101a8565b3480156101d4575f5ffd5b506101a861271081565b3480156101e9575f5ffd5b506101fd6101f836600461110f565b6107d9565b60405161ffff9091168152602001610135565b34801561021b575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561024e575f5ffd5b50610257610881565b005b348015610264575f5ffd5b5061028c7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610135565b3480156102b0575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b348015610316575f5ffd5b506101a8610325366004611129565b60036020525f908152604090205481565b348015610341575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610374575f5ffd5b5061017161038336600461114b565b610cc2565b348015610393575f5ffd5b506101a86103a2366004611162565b600560209081525f928352604080842090915290825290205481565b3480156103c9575f5ffd5b506101a86103d8366004611199565b600460209081525f928352604080842090915290825290205481565b3480156103ff575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610432575f5ffd5b50610257610ce9565b5f67ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061049f57507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164210155b6104a857505f90565b50600190565b5f6007545f146104d1576040516306fda65d60e31b815260040160405180910390fd5b60016007819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561054d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561056b57604051631131fa7160e11b815260040160405180910390fd5b5f5f838154811061057e5761057e6111cc565b5f9182526020808320909101546001600160a01b038781168452600583526040808520919092168085529252822054935091508290036105c1575f9150506107cf565b6001600160a01b038085165f8181526005602090815260408083209486168352938152838220829055918152600390915290812080548492906106059084906111f4565b90915550506001600160a01b03841661068e575f816001600160a01b0316836040515f6040518083038185875af1925050503d805f8114610661576040519150601f19603f3d011682016040523d82523d5f602084013e610666565b606091505b5050905080610688576040516312171d8360e31b815260040160405180910390fd5b50610780565b6040516001600160a01b038281166024830152604482018490525f91829187169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516106e79190611207565b5f604051808303815f865af19150503d805f8114610720576040519150601f19603f3d011682016040523d82523d5f602084013e610725565b606091505b509150915081158061075f575080511580159061075f57508051602014158061075f57508080602001905181019061075d919061121d565b155b1561077d576040516312171d8360e31b815260040160405180910390fd5b50505b806001600160a01b0316846001600160a01b03167f9def4e2802183d68ce90a6a226a2962b59298616c27165f12c4fbc5c84cdd778846040516107c591815260200190565b60405180910390a3505b5f60075592915050565b5f60018360ff1611156107ff5760405163c52a9bd360e01b815260040160405180910390fd5b60ff831615610842576002828154811061081b5761081b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610878565b60018281548110610855576108556111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b90505b92915050565b600754156108a2576040516306fda65d60e31b815260040160405180910390fd5b60016007556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163f7f0000000000000000000000000000000000000000000000000000000000000000146109115760405163c4d1e76d60e01b815260040160405180910390fd5b60405163e559829360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f0000000000000000000000000000000000000000000000000000000000000000905f9081908190819081906001600160a01b0387169063e55982939060240160a060405180830381865afa15801561099f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c3919061123c565b945094509450945094507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580610a4057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b80610abf5750604080516001600160a01b0380881660208301528087169282019290925262ffffff85166060820152600284900b608082015290821660a08201527f00000000000000000000000000000000000000000000000000000000000000009060c0016040516020818303038152906040528051906020012014155b15610add5760405163c4d1e76d60e01b815260040160405180910390fd5b604051635ebb58fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201523060248201526001600160a01b03871690635ebb58fb90604401602060405180830381865afa158015610b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6991906112ba565b5f03610b885760405163644d871f60e01b815260040160405180910390fd5b60405163817db73b60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0387169063817db73b9060240160408051808303815f875af1158015610bea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0e91906112f0565b50505f610c3a7f0000000000000000000000000000000000000000000000000000000000000000610d69565b90505f610c667f0000000000000000000000000000000000000000000000000000000000000000610d69565b90507f50d477f3c6717d1dc81a9386e53f3b91ac3fb0f27da621cec06f053bb50358288282610c9361043b565b60408051938452602084019290925260ff169082015260600160405180910390a150505f600755505050505050565b5f8181548110610cd0575f80fd5b5f918252602090912001546001600160a01b0316905081565b60075415610d0a576040516306fda65d60e31b815260040160405180910390fd5b6001600755610d387f0000000000000000000000000000000000000000000000000000000000000000610d69565b50610d627f0000000000000000000000000000000000000000000000000000000000000000610d69565b505f600755565b5f5f610d7483611037565b6001600160a01b0384165f90815260036020526040902054909150811015610daf5760405163a54d597f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260036020526040902054610dd190826111f4565b9150815f03610de257505f92915050565b6001600160a01b0383165f908152600360205260408120829055610e0461043b565b6001600160a01b0385165f90815260046020908152604080832060ff8516845290915281205491925090610e39908590611318565b6001600160a01b0386165f90815260046020908152604080832060ff8716845290915281208290559091505b5f54811015610fe7575f60ff841615610eb25760028281548110610e8b57610e8b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610ee8565b60018281548110610ec557610ec56111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b61ffff1690505f61271082610efd828761133f565b610f079190611352565b610f119190611369565b82610f1e61271087611369565b610f289190611352565b610f329190611318565b6001600160a01b0389165f90815260066020908152604080832060ff8a16845282528083208784529091529020805490829055909150610f7281836111f4565b6001600160a01b038a165f9081526005602052604081208154909190819088908110610fa057610fa06111cc565b5f9182526020808320909101546001600160a01b0316835282019290925260400181208054909190610fd3908490611318565b909155505060019093019250610e65915050565b508160ff16856001600160a01b03167fd230713fbfe689d3213ae006d5ef0c7d344f2c538713b4d2ac9dfeb8aa6e3bd48660405161102791815260200190565b60405180910390a3505050919050565b5f6001600160a01b038216156110b2576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ad91906112ba565b61087b565b4792915050565b6001600160a01b03811681146110cd575f5ffd5b50565b5f5f604083850312156110e1575f5ffd5b82356110ec816110b9565b946020939093013593505050565b803560ff8116811461110a575f5ffd5b919050565b5f5f60408385031215611120575f5ffd5b6110ec836110fa565b5f60208284031215611139575f5ffd5b8135611144816110b9565b9392505050565b5f6020828403121561115b575f5ffd5b5035919050565b5f5f60408385031215611173575f5ffd5b823561117e816110b9565b9150602083013561118e816110b9565b809150509250929050565b5f5f604083850312156111aa575f5ffd5b82356111b5816110b9565b91506111c3602084016110fa565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561087b5761087b6111e0565b5f82518060208501845e5f920191825250919050565b5f6020828403121561122d575f5ffd5b81518015158114611144575f5ffd5b5f5f5f5f5f60a08688031215611250575f5ffd5b855161125b816110b9565b602087015190955061126c816110b9565b604087015190945062ffffff81168114611284575f5ffd5b8093505060608601518060020b811461129b575f5ffd5b60808701519092506112ac816110b9565b809150509295509295909350565b5f602082840312156112ca575f5ffd5b5051919050565b80516fffffffffffffffffffffffffffffffff8116811461110a575f5ffd5b5f5f60408385031215611301575f5ffd5b61130a836112d1565b91506111c3602084016112d1565b8082018082111561087b5761087b6111e0565b634e487b7160e01b5f52601260045260245ffd5b5f8261134d5761134d61132b565b500690565b808202811582820484141761087b5761087b6111e0565b5f826113775761137761132b565b50049056fea264697066735822122027e7898f05c64591ed349a2e43c15b4419de4668e536be6911bc9d7cc025c45c64736f6c634300081c0033a2646970667358221220abebd419840c0e88ac85388a215424936a7941a6b57cb8317b7ad8ae68fc2b9764736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806306a19b6b14610038578063365aaf0d14610067575b5f5ffd5b61004b6100463660046102bb565b610102565b6040516001600160a01b03909116815260200160405180910390f35b61004b6100753660046103b7565b604080516001600160a01b038516602080830191909152818301859052825180830384018152606080840190945280519101206001600160f81b031960808301523090921b6bffffffffffffffffffffffff19166081820152609581019190915260b581018290525f9060d50160408051601f198184030181529190528051602090910120949350505050565b604080513360208201529081018290525f908190606001604051602081830303815290604052805190602001209050808e8e8e8e8e8e8e8e8e8e8e60405161014990610234565b61015d9b9a9998979695949392919061042e565b8190604051809103905ff590508015801561017a573d5f5f3e3d5ffd5b509150336001600160a01b0316826001600160a01b03167f58fb3f257023f6aabbc0b987a10e27817a4a7cf839e01adacb6de7a6a01a0e1a846001600160a01b031663e1f1176d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021291906104ea565b60405190815260200160405180910390a3509c9b505050505050505050505050565b611c9a8061050283390190565b80356001600160a01b0381168114610257575f5ffd5b919050565b5f5f83601f84011261026c575f5ffd5b50813567ffffffffffffffff811115610283575f5ffd5b6020830191508360208260051b850101111561029d575f5ffd5b9250929050565b803567ffffffffffffffff81168114610257575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101208d8f0312156102d7575f5ffd5b6102e08d610241565b9b5060208d01359a506102f560408e01610241565b995061030360608e01610241565b985067ffffffffffffffff60808e0135111561031d575f5ffd5b61032d8e60808f01358f0161025c565b909850965067ffffffffffffffff60a08e0135111561034a575f5ffd5b61035a8e60a08f01358f0161025c565b909650945067ffffffffffffffff60c08e01351115610377575f5ffd5b6103878e60c08f01358f0161025c565b909450925061039860e08e016102a4565b91505f6101008e01359050809150509295989b509295989b509295989b565b5f5f5f606084860312156103c9575f5ffd5b6103d284610241565b95602085013595506040909401359392505050565b8183526020830192505f815f5b8481101561042457813561ffff811680821461040e575f5ffd5b87525060209586019591909101906001016103f4565b5093949350505050565b6001600160a01b038c81168252602082018c90528a81166040830152891660608201526101006080820181905281018790525f886101208301825b8a811015610497576001600160a01b0361048284610241565b16825260209283019290910190600101610469565b5083810360a08501526104ab81898b6103e7565b91505082810360c08401526104c18186886103e7565b9150506104da60e083018467ffffffffffffffff169052565b9c9b505050505050505050505050565b5f602082840312156104fa575f5ffd5b505191905056fe610160604052348015610010575f5ffd5b50604051611c9a380380611c9a83398101604081905261002f916105fe565b83516001600160a01b0389163b1580610046575087155b806100635750856001600160a01b0316876001600160a01b031610155b8061006c575080155b806100775750600881115b80610083575080845114155b8061008f575080835114155b156100ad5760405163c52a9bd360e01b815260040160405180910390fd5b5f5f5f5b8381101561027e575f6001600160a01b03168882815181106100d5576100d56106da565b60200260200101516001600160a01b0316148061011c5750306001600160a01b0316888281518110610109576101096106da565b60200260200101516001600160a01b0316145b1561013a5760405163c52a9bd360e01b815260040160405180910390fd5b5f5b818110156101b057888281518110610156576101566106da565b60200260200101516001600160a01b0316898281518110610179576101796106da565b60200260200101516001600160a01b0316036101a85760405163c52a9bd360e01b815260040160405180910390fd5b60010161013c565b506001600160401b03851615801561020257508581815181106101d5576101d56106da565b602002602001015161ffff168782815181106101f3576101f36106da565b602002602001015161ffff1614155b156102205760405163c52a9bd360e01b815260040160405180910390fd5b868181518110610232576102326106da565b602002602001015161ffff168361024991906106ee565b925085818151811061025d5761025d6106da565b602002602001015161ffff168261027491906106ee565b91506001016100b1565b506127108214158061029257506127108114155b156102b05760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b03808c1660808190523f60a05260c08b905289811660e0528816610100526001600160401b0384166101205286516102f5905f9060208a0190610378565b5085516103099060019060208901906103db565b50845161031d9060029060208801906103db565b50468b8c6001600160a01b03163f8c8c8c8c8c8c8c60405160200161034b9a99989796959493929190610751565b60408051601f19818403018152919052805160209091012061014052506108209950505050505050505050565b828054828255905f5260205f209081019282156103cb579160200282015b828111156103cb57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610396565b506103d7929150610478565b5090565b828054828255905f5260205f2090600f016010900481019282156103cb579160200282015f5b8382111561044157835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610401565b801561046f5782816101000a81549061ffff0219169055600201602081600101049283019260010302610441565b50506103d79291505b5b808211156103d7575f8155600101610479565b80516001600160a01b03811681146104a2575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156104e3576104e36104a7565b604052919050565b5f6001600160401b03821115610503576105036104a7565b5060051b60200190565b5f82601f83011261051c575f5ffd5b815161052f61052a826104eb565b6104bb565b8082825260208201915060208360051b860101925085831115610550575f5ffd5b602085015b83811015610574576105668161048c565b835260209283019201610555565b5095945050505050565b5f82601f83011261058d575f5ffd5b815161059b61052a826104eb565b8082825260208201915060208360051b8601019250858311156105bc575f5ffd5b602085015b8381101561057457805161ffff811681146105da575f5ffd5b8352602092830192016105c1565b80516001600160401b03811681146104a2575f5ffd5b5f5f5f5f5f5f5f5f610100898b031215610616575f5ffd5b61061f8961048c565b60208a0151909850965061063560408a0161048c565b955061064360608a0161048c565b60808a01519095506001600160401b0381111561065e575f5ffd5b61066a8b828c0161050d565b60a08b015190955090506001600160401b03811115610687575f5ffd5b6106938b828c0161057e565b60c08b015190945090506001600160401b038111156106b0575f5ffd5b6106bc8b828c0161057e565b9250506106cb60e08a016105e8565b90509295985092959890939650565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561070d57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f8151808452602084019350602083015f5b8281101561074757815161ffff16865260209586019590910190600101610725565b5093949350505050565b8a81526001600160a01b038a8116602080840191909152604083018b9052606083018a9052888216608084015290871660a083015261014060c0830181905286519083018190525f9161016084019183918901825b828110156107cd5781516001600160a01b03168552602094850194909101906001016107a6565b5050505082810360e08401526107e38187610713565b90508281036101008401526107f88186610713565b9150506108116101208301846001600160401b03169052565b9b9a5050505050505050505050565b60805160a05160c05160e0516101005161012051610140516113b26108e85f395f61040501525f818161026a01528181610447015261047201525f818161014f0152818161051801528181610a0b01528181610c420152610d3e01525f81816102b6015281816104db015281816109cf01528181610c160152610d1401525f81816102210152818161092001528181610a8301528181610aec0152610b9701525f818161034701526108d401525f81816102e9015281816108b1015261094601526113b25ff3fe608060405260043610610108575f3560e01c806379f1232b11610092578063d1bc76a111610062578063d1bc76a114610369578063d4570c1c14610388578063dff1b87c146103be578063e1f1176d146103f4578063fff6cae914610427575f5ffd5b806379f1232b146102a55780639ce110d7146102d8578063a7838c8a1461030b578063c9862b1a14610336575f5ffd5b8063249d39e9116100d8578063249d39e9146101c957806326143609146101de5780633e0dc34e146102105780634641257d14610243578063649a42aa14610259575f5ffd5b80630e1b26c61461011357806310d737b81461013e578063117de2fd1461018957806322eabb8e146101b6575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061012761043b565b60405160ff90911681526020015b60405180910390f35b348015610149575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610135565b348015610194575f5ffd5b506101a86101a33660046110d0565b6104ae565b604051908152602001610135565b3480156101c1575f5ffd5b505f546101a8565b3480156101d4575f5ffd5b506101a861271081565b3480156101e9575f5ffd5b506101fd6101f836600461110f565b6107d9565b60405161ffff9091168152602001610135565b34801561021b575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561024e575f5ffd5b50610257610881565b005b348015610264575f5ffd5b5061028c7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610135565b3480156102b0575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f5ffd5b506101717f000000000000000000000000000000000000000000000000000000000000000081565b348015610316575f5ffd5b506101a8610325366004611129565b60036020525f908152604090205481565b348015610341575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610374575f5ffd5b5061017161038336600461114b565b610cc2565b348015610393575f5ffd5b506101a86103a2366004611162565b600560209081525f928352604080842090915290825290205481565b3480156103c9575f5ffd5b506101a86103d8366004611199565b600460209081525f928352604080842090915290825290205481565b3480156103ff575f5ffd5b506101a87f000000000000000000000000000000000000000000000000000000000000000081565b348015610432575f5ffd5b50610257610ce9565b5f67ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161580159061049f57507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164210155b6104a857505f90565b50600190565b5f6007545f146104d1576040516306fda65d60e31b815260040160405180910390fd5b60016007819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561054d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561056b57604051631131fa7160e11b815260040160405180910390fd5b5f5f838154811061057e5761057e6111cc565b5f9182526020808320909101546001600160a01b038781168452600583526040808520919092168085529252822054935091508290036105c1575f9150506107cf565b6001600160a01b038085165f8181526005602090815260408083209486168352938152838220829055918152600390915290812080548492906106059084906111f4565b90915550506001600160a01b03841661068e575f816001600160a01b0316836040515f6040518083038185875af1925050503d805f8114610661576040519150601f19603f3d011682016040523d82523d5f602084013e610666565b606091505b5050905080610688576040516312171d8360e31b815260040160405180910390fd5b50610780565b6040516001600160a01b038281166024830152604482018490525f91829187169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516106e79190611207565b5f604051808303815f865af19150503d805f8114610720576040519150601f19603f3d011682016040523d82523d5f602084013e610725565b606091505b509150915081158061075f575080511580159061075f57508051602014158061075f57508080602001905181019061075d919061121d565b155b1561077d576040516312171d8360e31b815260040160405180910390fd5b50505b806001600160a01b0316846001600160a01b03167f9def4e2802183d68ce90a6a226a2962b59298616c27165f12c4fbc5c84cdd778846040516107c591815260200190565b60405180910390a3505b5f60075592915050565b5f60018360ff1611156107ff5760405163c52a9bd360e01b815260040160405180910390fd5b60ff831615610842576002828154811061081b5761081b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610878565b60018281548110610855576108556111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b90505b92915050565b600754156108a2576040516306fda65d60e31b815260040160405180910390fd5b60016007556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163f7f0000000000000000000000000000000000000000000000000000000000000000146109115760405163c4d1e76d60e01b815260040160405180910390fd5b60405163e559829360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f0000000000000000000000000000000000000000000000000000000000000000905f9081908190819081906001600160a01b0387169063e55982939060240160a060405180830381865afa15801561099f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c3919061123c565b945094509450945094507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580610a4057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b80610abf5750604080516001600160a01b0380881660208301528087169282019290925262ffffff85166060820152600284900b608082015290821660a08201527f00000000000000000000000000000000000000000000000000000000000000009060c0016040516020818303038152906040528051906020012014155b15610add5760405163c4d1e76d60e01b815260040160405180910390fd5b604051635ebb58fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201523060248201526001600160a01b03871690635ebb58fb90604401602060405180830381865afa158015610b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6991906112ba565b5f03610b885760405163644d871f60e01b815260040160405180910390fd5b60405163817db73b60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0387169063817db73b9060240160408051808303815f875af1158015610bea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0e91906112f0565b50505f610c3a7f0000000000000000000000000000000000000000000000000000000000000000610d69565b90505f610c667f0000000000000000000000000000000000000000000000000000000000000000610d69565b90507f50d477f3c6717d1dc81a9386e53f3b91ac3fb0f27da621cec06f053bb50358288282610c9361043b565b60408051938452602084019290925260ff169082015260600160405180910390a150505f600755505050505050565b5f8181548110610cd0575f80fd5b5f918252602090912001546001600160a01b0316905081565b60075415610d0a576040516306fda65d60e31b815260040160405180910390fd5b6001600755610d387f0000000000000000000000000000000000000000000000000000000000000000610d69565b50610d627f0000000000000000000000000000000000000000000000000000000000000000610d69565b505f600755565b5f5f610d7483611037565b6001600160a01b0384165f90815260036020526040902054909150811015610daf5760405163a54d597f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260036020526040902054610dd190826111f4565b9150815f03610de257505f92915050565b6001600160a01b0383165f908152600360205260408120829055610e0461043b565b6001600160a01b0385165f90815260046020908152604080832060ff8516845290915281205491925090610e39908590611318565b6001600160a01b0386165f90815260046020908152604080832060ff8716845290915281208290559091505b5f54811015610fe7575f60ff841615610eb25760028281548110610e8b57610e8b6111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff16610ee8565b60018281548110610ec557610ec56111cc565b905f5260205f2090601091828204019190066002029054906101000a900461ffff165b61ffff1690505f61271082610efd828761133f565b610f079190611352565b610f119190611369565b82610f1e61271087611369565b610f289190611352565b610f329190611318565b6001600160a01b0389165f90815260066020908152604080832060ff8a16845282528083208784529091529020805490829055909150610f7281836111f4565b6001600160a01b038a165f9081526005602052604081208154909190819088908110610fa057610fa06111cc565b5f9182526020808320909101546001600160a01b0316835282019290925260400181208054909190610fd3908490611318565b909155505060019093019250610e65915050565b508160ff16856001600160a01b03167fd230713fbfe689d3213ae006d5ef0c7d344f2c538713b4d2ac9dfeb8aa6e3bd48660405161102791815260200190565b60405180910390a3505050919050565b5f6001600160a01b038216156110b2576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ad91906112ba565b61087b565b4792915050565b6001600160a01b03811681146110cd575f5ffd5b50565b5f5f604083850312156110e1575f5ffd5b82356110ec816110b9565b946020939093013593505050565b803560ff8116811461110a575f5ffd5b919050565b5f5f60408385031215611120575f5ffd5b6110ec836110fa565b5f60208284031215611139575f5ffd5b8135611144816110b9565b9392505050565b5f6020828403121561115b575f5ffd5b5035919050565b5f5f60408385031215611173575f5ffd5b823561117e816110b9565b9150602083013561118e816110b9565b809150509250929050565b5f5f604083850312156111aa575f5ffd5b82356111b5816110b9565b91506111c3602084016110fa565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561087b5761087b6111e0565b5f82518060208501845e5f920191825250919050565b5f6020828403121561122d575f5ffd5b81518015158114611144575f5ffd5b5f5f5f5f5f60a08688031215611250575f5ffd5b855161125b816110b9565b602087015190955061126c816110b9565b604087015190945062ffffff81168114611284575f5ffd5b8093505060608601518060020b811461129b575f5ffd5b60808701519092506112ac816110b9565b809150509295509295909350565b5f602082840312156112ca575f5ffd5b5051919050565b80516fffffffffffffffffffffffffffffffff8116811461110a575f5ffd5b5f5f60408385031215611301575f5ffd5b61130a836112d1565b91506111c3602084016112d1565b8082018082111561087b5761087b6111e0565b634e487b7160e01b5f52601260045260245ffd5b5f8261134d5761134d61132b565b500690565b808202811582820484141761087b5761087b6111e0565b5f826113775761137761132b565b50049056fea264697066735822122027e7898f05c64591ed349a2e43c15b4419de4668e536be6911bc9d7cc025c45c64736f6c634300081c0033a2646970667358221220abebd419840c0e88ac85388a215424936a7941a6b57cb8317b7ad8ae68fc2b9764736f6c634300081c0033",
  "immutableReferences": {},
  "creationCodeHash": "0x23220eba761e83fb137c9b45b5e7a9a8b73fe0963ac431b431c8e4cdf187804d"
}
