{
  "_format": "hh-sol-artifact-1",
  "contractName": "PriceFeedAlgebra",
  "sourceName": "contracts/Oracles/Albegra/PriceFeedAlgebra.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_dataInput",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ArrayLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "AssetMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DivisionByZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "NoBasePrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoPrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Overflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "pool",
          "type": "address"
        }
      ],
      "name": "TokenNotInPair",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "asset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        }
      ],
      "name": "fetchPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDecodedData",
      "outputs": [
        {
          "internalType": "address",
          "name": "baseOracle",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "pools",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "twapPeriods",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_dataInput",
          "type": "bytes"
        }
      ],
      "name": "validateData",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523480156200001157600080fd5b506040516200262c3803806200262c833981016040819052620000349162000527565b6001600160a01b0382166080526200004c8162000063565b60006200005a828262000683565b50505062000993565b6000808080620000738562000499565b93509350935093506080516001600160a01b0316836000815181106200009d576200009d6200074f565b60200260200101516001600160a01b0316146200010f5760805183600081518110620000cd57620000cd6200074f565b6020026020010151604051634e83a9b960e01b8152600401620001069291906001600160a01b0392831681529116602082015260400190565b60405180910390fd5b81516200011e9060016200077b565b83511415806200013057508051825114155b156200014f576040516305c3d17360e11b815260040160405180910390fd5b6000846001600160a01b031663ace1798e856001875162000171919062000797565b815181106200018457620001846200074f565b60200260200101516040518263ffffffff1660e01b8152600401620001b891906001600160a01b0391909116815260200190565b602060405180830381865afa158015620001d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fc9190620007ad565b9050806000036200025d57836001855162000218919062000797565b815181106200022b576200022b6200074f565b602002602001015160405163089bfea760e01b81526004016200010691906001600160a01b0391909116815260200190565b825160005b818110156200048f5760008682815181106200028257620002826200074f565b602002602001015190506000878360016200029e91906200077b565b81518110620002b157620002b16200074f565b602002602001015190506000878481518110620002d257620002d26200074f565b602002602001015190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003439190620007c7565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ac9190620007c7565b9050816001600160a01b0316856001600160a01b031614158015620003e35750806001600160a01b0316856001600160a01b031614155b156200041657604051638a9bb81760e01b81526001600160a01b0380871660048301528416602482015260440162000106565b816001600160a01b0316846001600160a01b0316141580156200044b5750806001600160a01b0316846001600160a01b031614155b156200047e57604051638a9bb81760e01b81526001600160a01b0380861660048301528416602482015260440162000106565b856001019550505050505062000262565b5050505050505050565b6000606080606084806020019051810190620004b6919062000892565b92989197509550909350915050565b6001600160a01b0381168114620004db57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200051f576200051f620004de565b604052919050565b600080604083850312156200053b57600080fd5b82516200054881620004c5565b602084810151919350906001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004de565b620005a6601f8201601f19168501620004f4565b91508082528784828501011115620005bd57600080fd5b60005b81811015620005dd578381018501518382018601528401620005c0565b506000848284010152508093505050509250929050565b600181811c908216806200060957607f821691505b6020821081036200062a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067e57600081815260208120601f850160051c81016020861015620006595750805b601f850160051c820191505b818110156200067a5782815560010162000665565b5050505b505050565b81516001600160401b038111156200069f576200069f620004de565b620006b781620006b08454620005f4565b8462000630565b602080601f831160018114620006ef5760008415620006d65750858301515b600019600386901b1c1916600185901b1785556200067a565b600085815260208120601f198616915b828110156200072057888601518255948401946001909101908401620006ff565b50858210156200073f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111562000791576200079162000765565b92915050565b8181038181111562000791576200079162000765565b600060208284031215620007c057600080fd5b5051919050565b600060208284031215620007da57600080fd5b8151620007e781620004c5565b9392505050565b60006001600160401b038211156200080a576200080a620004de565b5060051b60200190565b600082601f8301126200082657600080fd5b815160206200083f6200083983620007ee565b620004f4565b82815260059290921b840181019181810190868411156200085f57600080fd5b8286015b84811015620008875780516200087981620004c5565b835291830191830162000863565b509695505050505050565b60008060008060808587031215620008a957600080fd5b8451620008b681620004c5565b602086810151919550906001600160401b0380821115620008d657600080fd5b620008e489838a0162000814565b95506040880151915080821115620008fb57600080fd5b6200090989838a0162000814565b945060608801519150808211156200092057600080fd5b508601601f810188136200093357600080fd5b8051620009446200083982620007ee565b81815260059190911b8201830190838101908a8311156200096457600080fd5b928401925b82841015620009845783518252928401929084019062000969565b979a9699509497505050505050565b608051611c63620009c96000396000818160560152818160fc0152818161014f015281816105dd015261062b0152611c636000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338d52e0f14610051578063a6ffa36c14610095578063ace1798e146100aa578063fab3912c146100cb575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a86100a33660046112cc565b6100e3565b005b6100bd6100b8366004611379565b610538565b60405190815260200161008c565b6100d36109c6565b60405161008c94939291906113e1565b6000806000806100f2856109eb565b93509350935093507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836000815181106101375761013761145a565b60200260200101516001600160a01b0316146101c2577f0000000000000000000000000000000000000000000000000000000000000000836000815181106101815761018161145a565b6020026020010151604051634e83a9b960e01b81526004016101b99291906001600160a01b0392831681529116602082015260400190565b60405180910390fd5b81516101cf906001611486565b83511415806101e057508051825114155b156101fe576040516305c3d17360e11b815260040160405180910390fd5b6000846001600160a01b031663ace1798e856001875161021e919061149f565b8151811061022e5761022e61145a565b60200260200101516040518263ffffffff1660e01b815260040161026191906001600160a01b0391909116815260200190565b602060405180830381865afa15801561027e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a291906114b2565b9050806000036103155783600185516102bb919061149f565b815181106102cb576102cb61145a565b60200260200101516040517f089bfea70000000000000000000000000000000000000000000000000000000081526004016101b991906001600160a01b0391909116815260200190565b825160005b8181101561052e5760008682815181106103365761033661145a565b602002602001015190506000878360016103509190611486565b815181106103605761036061145a565b60200260200101519050600087848151811061037e5761037e61145a565b602002602001015190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec91906114cb565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045291906114cb565b9050816001600160a01b0316856001600160a01b0316141580156104885750806001600160a01b0316856001600160a01b031614155b156104b957604051638a9bb81760e01b81526001600160a01b038087166004830152841660248201526044016101b9565b816001600160a01b0316846001600160a01b0316141580156104ed5750806001600160a01b0316846001600160a01b031614155b1561051e57604051638a9bb81760e01b81526001600160a01b038086166004830152841660248201526044016101b9565b856001019550505050505061031a565b5050505050505050565b60008060008060006105d360008054610550906114e8565b80601f016020809104026020016040519081016040528092919081815260200182805461057c906114e8565b80156105c95780601f1061059e576101008083540402835291602001916105c9565b820191906000526020600020905b8154815290600101906020018083116105ac57829003601f168201915b50505050506109eb565b93509350935093507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161461066057604051634e83a9b960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152871660248201526044016101b9565b6000825167ffffffffffffffff81111561067c5761067c611285565b6040519080825280602002602001820160405280156106a5578160200160208202803683370190505b50905060005b8351811015610728576106f08482815181106106c9576106c961145a565b60200260200101518483815181106106e3576106e361145a565b6020026020010151610a15565b508282815181106107035761070361145a565b602002602001018160020b60020b81525050808061072090611522565b9150506106ab565b5060006107358583610c6f565b9050627fffff81131561075b57604051631a93c68960e11b815260040160405180910390fd5b60006107ed82876000815181106107745761077461145a565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dd919061153b565b6107e890600a611642565b610d8b565b90506000876001600160a01b031663ace1798e8860018a5161080f919061149f565b8151811061081f5761081f61145a565b60200260200101516040518263ffffffff1660e01b815260040161085291906001600160a01b0391909116815260200190565b602060405180830381865afa15801561086f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089391906114b2565b9050600087600189516108a6919061149f565b815181106108b6576108b661145a565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f919061153b565b905060008160ff1660121461095a5761093982600a611642565b61094b85670de0b6b3a7640000611651565b610955919061167e565b61095c565b835b9050670de0b6b3a76400006109718483611651565b61097b919061167e565b9a508a6000036109b7576040517fc149905d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050919050565b600060608060606109dd60008054610550906114e8565b935093509350935090919293565b6000606080606084806020019051810190610a069190611785565b92989197509550909350915050565b6000808263ffffffff16600003610a58576040517f23d359a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610a8d57610a8d61145a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610abc57610abc61145a565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b0316639d3a5241846040518263ffffffff1660e01b8152600401610b059190611821565b600060405180830381865afa158015610b22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4a9190810190611947565b505091509150600082600081518110610b6557610b6561145a565b602002602001015183600181518110610b8057610b8061145a565b6020026020010151610b929190611a2d565b9050600082600081518110610ba957610ba961145a565b602002602001015183600181518110610bc457610bc461145a565b6020026020010151610bd69190611a5a565b9050610be6600389900b83611a7a565b965060008260060b128015610c0a5750610c04600389900b83611ab8565b60060b15155b15610c1d5786610c1981611ada565b9750505b6000610c366001600160a01b0363ffffffff8b16611afd565b9050610c6077ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682611b40565b96505050505050509250929050565b6000815160018451610c81919061149f565b14610c9f576040516305c3d17360e11b815260040160405180910390fd5b60015b82518111610d8457838181518110610cbc57610cbc61145a565b60200260200101516001600160a01b031684600183610cdb919061149f565b81518110610ceb57610ceb61145a565b60200260200101516001600160a01b031610610d3b5782610d0d60018361149f565b81518110610d1d57610d1d61145a565b602002602001015160020b82610d339190611b77565b915081610d71565b82610d4760018361149f565b81518110610d5757610d5761145a565b602002602001015160020b82610d6d9190611b97565b9150815b5080610d7c81611522565b915050610ca2565b5092915050565b600080610d9784610e69565b90506fffffffffffffffffffffffffffffffff610dbd846001600160a01b038416611651565b11610e0f576000610dd76001600160a01b03831680611651565b90507801000000000000000000000000000000000000000000000000610dfd8583611651565b610e07919061167e565b925050610d84565b600068010000000000000000610e2e6001600160a01b03841680611651565b610e38919061167e565b9050700100000000000000000000000000000000610e568583611651565b610e60919061167e565b95945050505050565b60008060008360020b12610e80578260020b610e8d565b8260020b610e8d90611bbf565b9050610e9c620d89e719611bf7565b62ffffff16811115610ec157604051631a93c68960e11b815260040160405180910390fd5b600081600116600003610ee557700100000000000000000000000000000000610ef7565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610f36576080610f31826ffff97272373d413259a46990580e213a611651565b901c90505b6004821615610f60576080610f5b826ffff2e50f5f656932ef12357cf3c7fdcc611651565b901c90505b6008821615610f8a576080610f85826fffe5caca7e10e4e61c3624eaa0941cd0611651565b901c90505b6010821615610fb4576080610faf826fffcb9843d60f6159c9db58835c926644611651565b901c90505b6020821615610fde576080610fd9826fff973b41fa98c081472e6896dfb254c0611651565b901c90505b6040821615611008576080611003826fff2ea16466c96a3843ec78b326b52861611651565b901c90505b608082161561103257608061102d826ffe5dee046a99a2a811c461f1969c3053611651565b901c90505b61010082161561105d576080611058826ffcbe86c7900a88aedcffc83b479aa3a4611651565b901c90505b610200821615611088576080611083826ff987a7253ac413176f2b074cf7815e54611651565b901c90505b6104008216156110b35760806110ae826ff3392b0822b70005940c7a398e4b70f3611651565b901c90505b6108008216156110de5760806110d9826fe7159475a2c29b7443b29c7fa6e889d9611651565b901c90505b611000821615611109576080611104826fd097f3bdfd2022b8845ad8f792aa5825611651565b901c90505b61200082161561113457608061112f826fa9f746462d870fdf8a65dc1f90e061e5611651565b901c90505b61400082161561115f57608061115a826f70d869a156d2a1b890bb3df62baf32f7611651565b901c90505b61800082161561118a576080611185826f31be135f97d08fd981231505542fcfa6611651565b901c90505b620100008216156111b65760806111b1826f09aa508b5b7a84e1c677de54f3e99bc9611651565b901c90505b620200008216156111e15760806111dc826e5d6af8dedb81196699c329225ee604611651565b901c90505b6204000082161561120b576080611206826d2216e584f5fa1ea926041bedfe98611651565b901c90505b6208000082161561123357608061122e826b048a170391f7dc42444e8fa2611651565b901c90505b60008460020b131561124e5761124b8160001961167e565b90505b61125d64010000000082611c19565b1561126957600161126c565b60005b61127d9060ff16602083901c611486565b949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112c4576112c4611285565b604052919050565b600060208083850312156112df57600080fd5b823567ffffffffffffffff808211156112f757600080fd5b818501915085601f83011261130b57600080fd5b81358181111561131d5761131d611285565b61132f601f8201601f1916850161129b565b9150808252868482850101111561134557600080fd5b8084840185840137600090820190930192909252509392505050565b6001600160a01b038116811461137657600080fd5b50565b60006020828403121561138b57600080fd5b813561139681611361565b9392505050565b600081518084526020808501945080840160005b838110156113d65781516001600160a01b0316875295820195908201906001016113b1565b509495945050505050565b6001600160a01b038516815260006020608081840152611404608084018761139d565b8381036040850152611416818761139d565b8481036060860152855180825283870192509083019060005b8181101561144b5783518352928401929184019160010161142f565b50909998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561149957611499611470565b92915050565b8181038181111561149957611499611470565b6000602082840312156114c457600080fd5b5051919050565b6000602082840312156114dd57600080fd5b815161139681611361565b600181811c908216806114fc57607f821691505b60208210810361151c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161153457611534611470565b5060010190565b60006020828403121561154d57600080fd5b815160ff8116811461139657600080fd5b600181815b8085111561159957816000190482111561157f5761157f611470565b8085161561158c57918102915b93841c9390800290611563565b509250929050565b6000826115b057506001611499565b816115bd57506000611499565b81600181146115d357600281146115dd576115f9565b6001915050611499565b60ff8411156115ee576115ee611470565b50506001821b611499565b5060208310610133831016604e8410600b841016171561161c575081810a611499565b611626838361155e565b806000190482111561163a5761163a611470565b029392505050565b600061139660ff8416836115a1565b808202811582820484141761149957611499611470565b634e487b7160e01b600052601260045260246000fd5b60008261168d5761168d611668565b500490565b600067ffffffffffffffff8211156116ac576116ac611285565b5060051b60200190565b600082601f8301126116c757600080fd5b815160206116dc6116d783611692565b61129b565b82815260059290921b840181019181810190868411156116fb57600080fd5b8286015b8481101561171f57805161171281611361565b83529183019183016116ff565b509695505050505050565b600082601f83011261173b57600080fd5b8151602061174b6116d783611692565b82815260059290921b8401810191818101908684111561176a57600080fd5b8286015b8481101561171f578051835291830191830161176e565b6000806000806080858703121561179b57600080fd5b84516117a681611361565b602086015190945067ffffffffffffffff808211156117c457600080fd5b6117d0888389016116b6565b945060408701519150808211156117e657600080fd5b6117f2888389016116b6565b9350606087015191508082111561180857600080fd5b506118158782880161172a565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b8181101561185f57835163ffffffff168352928401929184019160010161183d565b50909695505050505050565b600082601f83011261187c57600080fd5b8151602061188c6116d783611692565b82815260059290921b840181019181810190868411156118ab57600080fd5b8286015b8481101561171f5780516118c281611361565b83529183019183016118af565b600082601f8301126118e057600080fd5b815160206118f06116d783611692565b82815260059290921b8401810191818101908684111561190f57600080fd5b8286015b8481101561171f5780516dffffffffffffffffffffffffffff8116811461193a5760008081fd5b8352918301918301611913565b6000806000806080858703121561195d57600080fd5b845167ffffffffffffffff8082111561197557600080fd5b818701915087601f83011261198957600080fd5b815160206119996116d783611692565b82815260059290921b8401810191818101908b8411156119b857600080fd5b948201945b838610156119e65785518060060b81146119d75760008081fd5b825294820194908201906119bd565b918a01519198509093505050808211156119ff57600080fd5b611a0b8883890161186b565b94506040870151915080821115611a2157600080fd5b6117f2888389016118cf565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561149957611499611470565b6001600160a01b03828116828216039080821115610d8457610d84611470565b60008160060b8360060b80611a9157611a91611668565b667fffffffffffff19821460001982141615611aaf57611aaf611470565b90059392505050565b60008260060b80611acb57611acb611668565b808360060b0791505092915050565b60008160020b627fffff198103611af357611af3611470565b6000190192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417611b3757611b37611470565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff80841680611b6b57611b6b611668565b92169190910492915050565b8181036000831280158383131683831282161715610d8457610d84611470565b8082018281126000831280158216821582161715611bb757611bb7611470565b505092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203611bf057611bf0611470565b5060000390565b60008160020b627fffff198103611c1057611c10611470565b60000392915050565b600082611c2857611c28611668565b50069056fea2646970667358221220c2d7545c582b538b39d21f741fe20c35ce5ea63a60096870519751d53b10018864736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338d52e0f14610051578063a6ffa36c14610095578063ace1798e146100aa578063fab3912c146100cb575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a86100a33660046112cc565b6100e3565b005b6100bd6100b8366004611379565b610538565b60405190815260200161008c565b6100d36109c6565b60405161008c94939291906113e1565b6000806000806100f2856109eb565b93509350935093507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836000815181106101375761013761145a565b60200260200101516001600160a01b0316146101c2577f0000000000000000000000000000000000000000000000000000000000000000836000815181106101815761018161145a565b6020026020010151604051634e83a9b960e01b81526004016101b99291906001600160a01b0392831681529116602082015260400190565b60405180910390fd5b81516101cf906001611486565b83511415806101e057508051825114155b156101fe576040516305c3d17360e11b815260040160405180910390fd5b6000846001600160a01b031663ace1798e856001875161021e919061149f565b8151811061022e5761022e61145a565b60200260200101516040518263ffffffff1660e01b815260040161026191906001600160a01b0391909116815260200190565b602060405180830381865afa15801561027e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a291906114b2565b9050806000036103155783600185516102bb919061149f565b815181106102cb576102cb61145a565b60200260200101516040517f089bfea70000000000000000000000000000000000000000000000000000000081526004016101b991906001600160a01b0391909116815260200190565b825160005b8181101561052e5760008682815181106103365761033661145a565b602002602001015190506000878360016103509190611486565b815181106103605761036061145a565b60200260200101519050600087848151811061037e5761037e61145a565b602002602001015190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec91906114cb565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045291906114cb565b9050816001600160a01b0316856001600160a01b0316141580156104885750806001600160a01b0316856001600160a01b031614155b156104b957604051638a9bb81760e01b81526001600160a01b038087166004830152841660248201526044016101b9565b816001600160a01b0316846001600160a01b0316141580156104ed5750806001600160a01b0316846001600160a01b031614155b1561051e57604051638a9bb81760e01b81526001600160a01b038086166004830152841660248201526044016101b9565b856001019550505050505061031a565b5050505050505050565b60008060008060006105d360008054610550906114e8565b80601f016020809104026020016040519081016040528092919081815260200182805461057c906114e8565b80156105c95780601f1061059e576101008083540402835291602001916105c9565b820191906000526020600020905b8154815290600101906020018083116105ac57829003601f168201915b50505050506109eb565b93509350935093507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161461066057604051634e83a9b960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152871660248201526044016101b9565b6000825167ffffffffffffffff81111561067c5761067c611285565b6040519080825280602002602001820160405280156106a5578160200160208202803683370190505b50905060005b8351811015610728576106f08482815181106106c9576106c961145a565b60200260200101518483815181106106e3576106e361145a565b6020026020010151610a15565b508282815181106107035761070361145a565b602002602001018160020b60020b81525050808061072090611522565b9150506106ab565b5060006107358583610c6f565b9050627fffff81131561075b57604051631a93c68960e11b815260040160405180910390fd5b60006107ed82876000815181106107745761077461145a565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dd919061153b565b6107e890600a611642565b610d8b565b90506000876001600160a01b031663ace1798e8860018a5161080f919061149f565b8151811061081f5761081f61145a565b60200260200101516040518263ffffffff1660e01b815260040161085291906001600160a01b0391909116815260200190565b602060405180830381865afa15801561086f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089391906114b2565b9050600087600189516108a6919061149f565b815181106108b6576108b661145a565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f919061153b565b905060008160ff1660121461095a5761093982600a611642565b61094b85670de0b6b3a7640000611651565b610955919061167e565b61095c565b835b9050670de0b6b3a76400006109718483611651565b61097b919061167e565b9a508a6000036109b7576040517fc149905d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050919050565b600060608060606109dd60008054610550906114e8565b935093509350935090919293565b6000606080606084806020019051810190610a069190611785565b92989197509550909350915050565b6000808263ffffffff16600003610a58576040517f23d359a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610a8d57610a8d61145a565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610abc57610abc61145a565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b0316639d3a5241846040518263ffffffff1660e01b8152600401610b059190611821565b600060405180830381865afa158015610b22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b4a9190810190611947565b505091509150600082600081518110610b6557610b6561145a565b602002602001015183600181518110610b8057610b8061145a565b6020026020010151610b929190611a2d565b9050600082600081518110610ba957610ba961145a565b602002602001015183600181518110610bc457610bc461145a565b6020026020010151610bd69190611a5a565b9050610be6600389900b83611a7a565b965060008260060b128015610c0a5750610c04600389900b83611ab8565b60060b15155b15610c1d5786610c1981611ada565b9750505b6000610c366001600160a01b0363ffffffff8b16611afd565b9050610c6077ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682611b40565b96505050505050509250929050565b6000815160018451610c81919061149f565b14610c9f576040516305c3d17360e11b815260040160405180910390fd5b60015b82518111610d8457838181518110610cbc57610cbc61145a565b60200260200101516001600160a01b031684600183610cdb919061149f565b81518110610ceb57610ceb61145a565b60200260200101516001600160a01b031610610d3b5782610d0d60018361149f565b81518110610d1d57610d1d61145a565b602002602001015160020b82610d339190611b77565b915081610d71565b82610d4760018361149f565b81518110610d5757610d5761145a565b602002602001015160020b82610d6d9190611b97565b9150815b5080610d7c81611522565b915050610ca2565b5092915050565b600080610d9784610e69565b90506fffffffffffffffffffffffffffffffff610dbd846001600160a01b038416611651565b11610e0f576000610dd76001600160a01b03831680611651565b90507801000000000000000000000000000000000000000000000000610dfd8583611651565b610e07919061167e565b925050610d84565b600068010000000000000000610e2e6001600160a01b03841680611651565b610e38919061167e565b9050700100000000000000000000000000000000610e568583611651565b610e60919061167e565b95945050505050565b60008060008360020b12610e80578260020b610e8d565b8260020b610e8d90611bbf565b9050610e9c620d89e719611bf7565b62ffffff16811115610ec157604051631a93c68960e11b815260040160405180910390fd5b600081600116600003610ee557700100000000000000000000000000000000610ef7565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610f36576080610f31826ffff97272373d413259a46990580e213a611651565b901c90505b6004821615610f60576080610f5b826ffff2e50f5f656932ef12357cf3c7fdcc611651565b901c90505b6008821615610f8a576080610f85826fffe5caca7e10e4e61c3624eaa0941cd0611651565b901c90505b6010821615610fb4576080610faf826fffcb9843d60f6159c9db58835c926644611651565b901c90505b6020821615610fde576080610fd9826fff973b41fa98c081472e6896dfb254c0611651565b901c90505b6040821615611008576080611003826fff2ea16466c96a3843ec78b326b52861611651565b901c90505b608082161561103257608061102d826ffe5dee046a99a2a811c461f1969c3053611651565b901c90505b61010082161561105d576080611058826ffcbe86c7900a88aedcffc83b479aa3a4611651565b901c90505b610200821615611088576080611083826ff987a7253ac413176f2b074cf7815e54611651565b901c90505b6104008216156110b35760806110ae826ff3392b0822b70005940c7a398e4b70f3611651565b901c90505b6108008216156110de5760806110d9826fe7159475a2c29b7443b29c7fa6e889d9611651565b901c90505b611000821615611109576080611104826fd097f3bdfd2022b8845ad8f792aa5825611651565b901c90505b61200082161561113457608061112f826fa9f746462d870fdf8a65dc1f90e061e5611651565b901c90505b61400082161561115f57608061115a826f70d869a156d2a1b890bb3df62baf32f7611651565b901c90505b61800082161561118a576080611185826f31be135f97d08fd981231505542fcfa6611651565b901c90505b620100008216156111b65760806111b1826f09aa508b5b7a84e1c677de54f3e99bc9611651565b901c90505b620200008216156111e15760806111dc826e5d6af8dedb81196699c329225ee604611651565b901c90505b6204000082161561120b576080611206826d2216e584f5fa1ea926041bedfe98611651565b901c90505b6208000082161561123357608061122e826b048a170391f7dc42444e8fa2611651565b901c90505b60008460020b131561124e5761124b8160001961167e565b90505b61125d64010000000082611c19565b1561126957600161126c565b60005b61127d9060ff16602083901c611486565b949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112c4576112c4611285565b604052919050565b600060208083850312156112df57600080fd5b823567ffffffffffffffff808211156112f757600080fd5b818501915085601f83011261130b57600080fd5b81358181111561131d5761131d611285565b61132f601f8201601f1916850161129b565b9150808252868482850101111561134557600080fd5b8084840185840137600090820190930192909252509392505050565b6001600160a01b038116811461137657600080fd5b50565b60006020828403121561138b57600080fd5b813561139681611361565b9392505050565b600081518084526020808501945080840160005b838110156113d65781516001600160a01b0316875295820195908201906001016113b1565b509495945050505050565b6001600160a01b038516815260006020608081840152611404608084018761139d565b8381036040850152611416818761139d565b8481036060860152855180825283870192509083019060005b8181101561144b5783518352928401929184019160010161142f565b50909998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561149957611499611470565b92915050565b8181038181111561149957611499611470565b6000602082840312156114c457600080fd5b5051919050565b6000602082840312156114dd57600080fd5b815161139681611361565b600181811c908216806114fc57607f821691505b60208210810361151c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161153457611534611470565b5060010190565b60006020828403121561154d57600080fd5b815160ff8116811461139657600080fd5b600181815b8085111561159957816000190482111561157f5761157f611470565b8085161561158c57918102915b93841c9390800290611563565b509250929050565b6000826115b057506001611499565b816115bd57506000611499565b81600181146115d357600281146115dd576115f9565b6001915050611499565b60ff8411156115ee576115ee611470565b50506001821b611499565b5060208310610133831016604e8410600b841016171561161c575081810a611499565b611626838361155e565b806000190482111561163a5761163a611470565b029392505050565b600061139660ff8416836115a1565b808202811582820484141761149957611499611470565b634e487b7160e01b600052601260045260246000fd5b60008261168d5761168d611668565b500490565b600067ffffffffffffffff8211156116ac576116ac611285565b5060051b60200190565b600082601f8301126116c757600080fd5b815160206116dc6116d783611692565b61129b565b82815260059290921b840181019181810190868411156116fb57600080fd5b8286015b8481101561171f57805161171281611361565b83529183019183016116ff565b509695505050505050565b600082601f83011261173b57600080fd5b8151602061174b6116d783611692565b82815260059290921b8401810191818101908684111561176a57600080fd5b8286015b8481101561171f578051835291830191830161176e565b6000806000806080858703121561179b57600080fd5b84516117a681611361565b602086015190945067ffffffffffffffff808211156117c457600080fd5b6117d0888389016116b6565b945060408701519150808211156117e657600080fd5b6117f2888389016116b6565b9350606087015191508082111561180857600080fd5b506118158782880161172a565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b8181101561185f57835163ffffffff168352928401929184019160010161183d565b50909695505050505050565b600082601f83011261187c57600080fd5b8151602061188c6116d783611692565b82815260059290921b840181019181810190868411156118ab57600080fd5b8286015b8481101561171f5780516118c281611361565b83529183019183016118af565b600082601f8301126118e057600080fd5b815160206118f06116d783611692565b82815260059290921b8401810191818101908684111561190f57600080fd5b8286015b8481101561171f5780516dffffffffffffffffffffffffffff8116811461193a5760008081fd5b8352918301918301611913565b6000806000806080858703121561195d57600080fd5b845167ffffffffffffffff8082111561197557600080fd5b818701915087601f83011261198957600080fd5b815160206119996116d783611692565b82815260059290921b8401810191818101908b8411156119b857600080fd5b948201945b838610156119e65785518060060b81146119d75760008081fd5b825294820194908201906119bd565b918a01519198509093505050808211156119ff57600080fd5b611a0b8883890161186b565b94506040870151915080821115611a2157600080fd5b6117f2888389016118cf565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561149957611499611470565b6001600160a01b03828116828216039080821115610d8457610d84611470565b60008160060b8360060b80611a9157611a91611668565b667fffffffffffff19821460001982141615611aaf57611aaf611470565b90059392505050565b60008260060b80611acb57611acb611668565b808360060b0791505092915050565b60008160020b627fffff198103611af357611af3611470565b6000190192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417611b3757611b37611470565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff80841680611b6b57611b6b611668565b92169190910492915050565b8181036000831280158383131683831282161715610d8457610d84611470565b8082018281126000831280158216821582161715611bb757611bb7611470565b505092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203611bf057611bf0611470565b5060000390565b60008160020b627fffff198103611c1057611c10611470565b60000392915050565b600082611c2857611c28611668565b50069056fea2646970667358221220c2d7545c582b538b39d21f741fe20c35ce5ea63a60096870519751d53b10018864736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
