0x608060405234801561001057600080fd5b50600080546001600160a01b03191673b38a90f14b24ae81ec0b8f1373694f5b59811d8a178155600160208190527fb1e25094503174116aca2af2be13af799644fc1f1c32be72c2cf61712a5d3907805460ff1990811683179091557fc415fd779cd56bad2a8190accfec5815c0234f8f7ff71c4e55f0fa863880c76b80548216831790557f18eb4ae727845c1faf96a61930dc79579f8a60757a91304eab11832c62751ad180548216831790557fed18261ba948364469e7c00fb5098d417abb0174c3bbd6ee901ece56de2277e580548216831790557f5ac4d37713ebd2398f6e1863a9938545118178bad58ad18472068ba266cdbb7e80548216831790557fdb874cf93f63af22689464042fbf605e11a2301987df768fdada51bdc30155db80548216831790557fefdf03997959a6cae1817132480b9b9aa86ed33cc5190d87f1bf42df847d89fc80548216831790557fe5cb9944b2e976bf2d6ffc136adbbb80a0f8a7e4040331fdeb7e4e62d894841c80548216831790557ffbd7c1ec1af8163d4298319b9247d0d410a7283c8e0c510ceac58a073521cea780548216831790557f4297e2d34c932564b52cc8d6621d207b6cff167d6ee931b5bcb7ba2bf38e734780548216831790557fc9ea2a2a03334976689733d2729ad4ad4c2ed00bf4e8462d675a9d5ac59d10ce80548216831790557fabf993057f7c3cfba6f1665c79da7dda21965b45e032a05ca672670d4501e2bc80548216831790557f1152b0024437ba25925dabc791c9594b5f645d96b6149ddc5fa442858bf9b81f80548216831790557f5f5a18c9af0caee0ec5879a64d1eacefa059e8b1f8ad5da993d3f08abfe06cc980548216831790557fc1fabdd5f43a4b21ab161b21e11657e30b86ff18914ae405d9edd57733c13fa580548216831790557fdde1eb96c2ac6f776db8fd7f30c9025dcd0996deb5dd747e60b688c7236deeb280548216831790557fd2fd171aece7eb684daada58ea36d9223501ad6590b8ae39db7acd6958c57d8a80548216831790557fc179e4714e752759ad92d3ea9f6ba395408defbf4e2a8ab90671db4fe9f3c97d80548216831790557f339b47c142784ac27eee5e85d72fc83cc95938886bd22366cd1e7a1db1ed2b8d80548216831790557fc466222d3ad0fcb55d372160cf34e1a7e9753354ba2c9b504600c97090608aa480548216831790557fcab9de9b4c281b19bae7d4a8027d84ba36792e396b2459b2a6d5604ed17af54280548216831790557f2736ea0d7f8fe3484fe99d21a605ad41c07d2171d0607d832af93cb5be24934680548216831790557f03030400fd40009e60f7d0a170f16996d2360aed440cc149d5a73d37e2b5e40e80548216831790557ffccf4156d51c892c1b53bbd3ee2d9fbb773d1ddb7316229e0388282bd707252880548216831790557f421d6800ac76630ff3a6b627ad7bcbe2fc1c312ee385b64aeb4a0013e68b7c8d80548216831790557f35ebf194548e9cddcad6653f6550a8b68f0508b2312ddcf189cc085875a866c580548216831790557f0a717c6533d8ab4e51b8e70504dd66f568315a95f4e6c4fdfa4a62ee6bbb16c280548216831790557f6700614278aff3c69550279cf9dc5afed7e12aa1ee0e035402f48e61963e0d0680548216831790557f70b5780b141ac4eaf6559b458809ba1f098a9721a5b63852557745bd43a3b53280548216831790557ff409069d2179517851c8cca3227e89dd9e7a6b54aa31956a45088c3b76dee35580548216831790557fe79df850bd6e0f90a43c3310d6b4c428b296c68b5d2415d3ef3d7aad9ba5be2780548216831790557fbb3b462aea69497d9d3169daa60000807be8f62f4dbd4d821699cac0c6faf12c80548216831790557f105647acca16d8d2b375c15f90cff65c626a4f9301c126fbc04a457baa2425ff80548216831790557ff7f1c2a0772e5c5d2a100d0d49e02683b955ca74bc70034e2444592ba8c49f5680548216831790557f85c1fb9a2f6847620d40cc13e929c22dbca8bb6ee93d46638c915c1faf24538a80548216831790557f9da0331c0842e741cfc2da3d108feb2a2978898391b6711302aa67fd091d3fa280548216831790557f1555814273afbeef8ab118e134069be43aee8951e7f2911c8285fb9f3a7a89a580548216831790557f1ffcdcaeaa50079e05e086978a2c37796eb3d63ab5331a00cd6d5d8f7aee046d80548216831790557f99f4b2f9efc40190db6722defb6e203051d537deb1981af792a86f27c706d23080548216831790557f04ffe0d30ecb3463e8d52c8a7a90e5558225ba956d0e7303944fd72c4de25b0980548216831790557f6e7b6ab093e8b3f213f0bfb05a0af70f8396ed11e6aa8ec5b2db9b8792ed52cf80548216831790557fc39f0a52d1630574a245cd64e1f0785223f040e4dc1a4a689e690a1566e4db3380548216831790557e3bc92dfa0b10b96387d7c62d815cb5e33a405c84bc7c8081e878dbec5f875a80548216831790557f61131638c5aa93e62a858a09962f921267d62779b2c15c89ed113e348731fb3f80548216831790557fb5b6627a2d4d20be20d4c21399268108de6334b64995e79669740f95366877f180548216831790557fd4d040110e7a41169a1e1d74247b3a0594b69c1c3a2c8b30fede7c76c8ffa55180548216831790557faaef7c8ee26178fcd0b2087ab85bd6f3365770b9924a63899ca9fed55d0914ce80548216831790557fdcefbb389f8ac28a190986584e089d420e76feb0a2d33dec01c29de47ab8628980548216831790557f7f5fe3def19467325a914cdaa6950f8e8396e69169a9b140e4fc538ab1f2eca5805482168317905573fcf81be5ffc403a3e2e4ca20b9ca7821ff4261059092527f7c81800e2a8e9a1622b98b58eb77a2ceb6fe521e9bde27701800817947897c5f80549092161790556140288061086b6000396000f3fe6080604052600436106100d65760003560e01c806376cdb03b1161007f578063ac8a584a11610059578063ac8a584a14610322578063fa461e3314610342578063fa483e7214610207578063fba2d3bd14610362576100dd565b806376cdb03b146102755780639870d7fe146102c7578063a32ce11e146102e7576100dd565b80632c8958f6116100b05780632c8958f61461020757806330de70c0146102275780633752374514610255576100dd565b8063090d23b9146101a057806313e7c9d8146101c257806323a69e7514610207576100dd565b366100dd57005b3480156100e957600080fd5b5060003660606100f98284613458565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916635bee97a360e01b148061015b5750610132366000613458565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191663ae067e0f60e01b145b1561019557600080606061017285600481896134a0565b81019061017f9190613572565b91945092509050610191838383610382565b5050505b915050805190602001f35b3480156101ac57600080fd5b506101c06101bb366004613668565b610506565b005b3480156101ce57600080fd5b506101f26101dd366004613668565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b506101c0610222366004613685565b6105ce565b34801561023357600080fd5b50610247610242366004613705565b610615565b6040519081526020016101fe565b34801561026157600080fd5b506101c06102703660046137c5565b6106b7565b34801561028157600080fd5b506000546102a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102d357600080fd5b506101c06102e2366004613668565b61169e565b3480156102f357600080fd5b506101f26103023660046138a5565b600260209081526000928352604080842090915290825290205460ff1681565b34801561032e57600080fd5b506101c061033d366004613668565b611771565b34801561034e57600080fd5b506101c061035d366004613572565b610382565b34801561036e57600080fd5b506101c061037d3660046138de565b61183e565b60035473ffffffffffffffffffffffffffffffffffffffff163314610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f756e617574686f72697a65642063616c6c65720000000000000000000000000060448201526064015b60405180910390fd5b3260009081526001602081905260409091205460ff161515146104ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f41682061682061682c20796f75206469646e27742073617920746865206d616760448201527f696320776f72640000000000000000000000000000000000000000000000000060648201526084016103ff565b60008084136104bc57826104be565b835b90506000828060200190518101906104d6919061390a565b6000549091506104ff90829073ffffffffffffffffffffffffffffffffffffffff16338561194f565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61060f848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038292505050565b50505050565b600080670de0b6b3a7640000831061062d5782610646565b610646836ec097ce7bc90715b34b9f1000000000613985565b9050671158e460913d000081116106a7576703782dace9d90000610672670de0b6b3a764000083613999565b61068490673782dace9d9000006139ac565b61068e9190613985565b6106a090674563918244f40000613999565b9392505050565b50670de0b6b3a764000092915050565b3360009081526001602081905260409091205460ff1615151461075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f41682061682061682c20796f75206469646e27742073617920746865206d616760448201527f696320776f72640000000000000000000000000000000000000000000000000060648201526084016103ff565b6040805180820190915260008082526020820152600061079d6040518060800160405280600081526020016000815260200160008152602001600081525090565b6101608401516c010000000000000000000000009042111561081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f455850495245440000000000000000000000000000000000000000000000000060448201526064016103ff565b60008561012001516008811115610834576108346139c3565b1480610856575060028561012001516008811115610854576108546139c3565b145b156109e557845160808601516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526109079291909116906370a0823190602401602060405180830381865afa1580156108d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f891906139f2565b866040015160ff1660126119e4565b8452602085015160808601516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526109b89291909116906370a0823190602401602060405180830381865afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a991906139f2565b866060015160ff1660126119e4565b602085018190528451906109d490670de0b6b3a76400006139ac565b6109de9190613985565b9250611136565b600185610120015160088111156109fe576109fe6139c3565b03610b165760008560a001516ec097ce7bc90715b34b9f1000000000610a249190613985565b90506000610a3b826012896040015160ff166119e4565b608088015188516040517ff140a35a0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9182166024820152929350169063f140a35a90604401602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb91906139f2565b945081610af186896060015160ff1660126119e4565b610b0390670de0b6b3a76400006139ac565b610b0d9190613985565b94505050611136565b60038561012001516008811115610b2f57610b2f6139c3565b1480610b51575060048561012001516008811115610b4f57610b4f6139c3565b145b80610b72575060058561012001516008811115610b7057610b706139c3565b145b80610b93575060078561012001516008811115610b9157610b916139c3565b145b156110d457600060038661012001516008811115610bb357610bb36139c3565b03610c3a57856080015173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b9190613a2d565b50949550610e0f945050505050565b60058661012001516008811115610c5357610c536139c3565b03610ccb57856080015173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b9190613ac0565b60078661012001516008811115610ce457610ce46139c3565b03610d6857856080015173ffffffffffffffffffffffffffffffffffffffff1663217ac2376040518163ffffffff1660e01b8152600401608060405180830381865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190613b40565b50919250610e0f915050565b6000866080015173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddd9190613b96565b50949650919450610df7935060649250849150613bfc9050565b610e0390612710613c1d565b61ffff16610140880152505b600060078761012001516008811115610e2a57610e2a6139c3565b03610ebd57866080015173ffffffffffffffffffffffffffffffffffffffff1663ab612f2b6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190613c5f565b50506fffffffffffffffffffffffffffffffff169050610f45565b866080015173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f309190613ca2565b6fffffffffffffffffffffffffffffffff1690505b866000015173ffffffffffffffffffffffffffffffffffffffff16876080015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd3919061390a565b73ffffffffffffffffffffffffffffffffffffffff160361103c5761100f81848473ffffffffffffffffffffffffffffffffffffffff16611a3f565b86526110328173ffffffffffffffffffffffffffffffffffffffff841685611a3f565b6020870152611086565b61105d818373ffffffffffffffffffffffffffffffffffffffff1685611a3f565b8652611080818473ffffffffffffffffffffffffffffffffffffffff8516611a3f565b60208701525b61109d8660000151886040015160ff1660126119e4565b8652602086015160608801516110b8919060ff1660126119e4565b60208701819052865190610b0390670de0b6b3a76400006139ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e6b6e6f776e2070726f746f636f6c20666f72206d3000000000000000000060448201526064016103ff565b60008560c001518660a00151670de0b6b3a764000061115591906139ac565b61115f9190613985565b9050600086610140015161ffff168261271061117b91906139ac565b6111859190613985565b90508661010001516000015161ffff168760e001516020015161ffff16826111ad91906139ac565b6111b79190613985565b9050600061271088610140015161ffff16846111d391906139ac565b6111dd9190613985565b90508761010001516020015161ffff168860e001516000015161ffff168261120591906139ac565b61120f9190613985565b9050818610158061121f57508086105b1561165357875160208901516000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908316906370a0823190602401602060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf91906139f2565b87526000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908216906370a0823190602401602060405180830381865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135591906139f2565b6020880181905260c08b015160608c0151670de0b6b3a76400009261137e9160ff1660126119e4565b61138891906139ac565b6113929190613985565b670de0b6b3a76400008b60a001516113b78a600001518e6040015160ff1660126119e4565b6113c191906139ac565b6113cb9190613985565b6113d59190613cbd565b604088015260018a610120015160088111156113f3576113f36139c3565b0361140657611403898b8a611b0c565b98505b8388106114225761141d8a8a896000015187611c9e565b611432565b6114328a8a896020015186612290565b6000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908316906370a0823190602401602060405180830381865afa1580156114a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c691906139f2565b87526000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908216906370a0823190602401602060405180830381865afa158015611538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c91906139f2565b6020880181905260c08b015160608c0151670de0b6b3a7640000926115859160ff1660126119e4565b61158f91906139ac565b6115999190613985565b670de0b6b3a76400008b60a001516115be8a600001518e6040015160ff1660126119e4565b6115c891906139ac565b6115d29190613985565b6115dc9190613cbd565b6060880181905260408801511115611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f76616c75655f6265666f7265203e2076616c75655f616674657200000000000060448201526064016103ff565b50505b60408051878152602081018490529081018290527f025a6d0108b37e941a995ef90f53742eae364e0173bdc394f5ca4cd87ea6a5ba9060600160405180910390a15050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461171f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b6000546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018390529083169063a9059cbb90604401600060405180830381600087803b15801561193357600080fd5b505af1158015611947573d6000803e3d6000fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261060f908590612801565b60008082841115611a15576119f98385613999565b611a0490600a613df0565b611a0e9086613985565b9050611a37565b611a1f8484613999565b611a2a90600a613df0565b611a3490866139ac565b90505b949350505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611a9757838281611a8d57611a8d613927565b04925050506106a0565b808411611aa357600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080518082018252600080825260208201528351608085015192517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529192611bca929116906370a0823190602401602060405180830381865afa158015611b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbb91906139f2565b846040015160ff1660126119e4565b8452602083015160808401516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152611c7b9291909116906370a0823190602401602060405180830381865afa158015611c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6c91906139f2565b846060015160ff1660126119e4565b602085018190528451611c8f919084612915565b85526020850152509192915050565b611cd76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000611d16856020015186600001518861014001518960c001518a60a001518b61010001516000015161ffff168c60e001516020015161ffff166129ae565b9050611d2b816012886040015160ff166119e4565b9050670de0b6b3a76400008660a0015182611d4691906139ac565b611d509190613985565b604080840191909152860151611d6790600a613dfc565b611d7290601e6139ac565b82604001511015611d8457505061060f565b611d8e8482612aa6565b60608301819052600003611da357505061060f565b611e4a604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081525090565b866080015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebd919061390a565b73ffffffffffffffffffffffffffffffffffffffff90811660208301528751811682526000805490911660608301528761012001516008811115611f0357611f036139c3565b03611f8a57611f1f86600001516012896040015160ff166119e4565b608082015260208601516060880151611f3e919060129060ff166119e4565b60a082015260808701805173ffffffffffffffffffffffffffffffffffffffff16604083015260608401519051610140890151611f8392919061ffff16846001612ac0565b8352612183565b60018761012001516008811115611fa357611fa36139c3565b1480611fc5575060028761012001516008811115611fc357611fc36139c3565b145b15611fff5760808701805173ffffffffffffffffffffffffffffffffffffffff16604083015260608401519051611f839190836001612c61565b60038761012001516008811115612018576120186139c3565b148061203a575060048761012001516008811115612038576120386139c3565b145b8061205b575060058761012001516008811115612059576120596139c3565b145b8061207c57506007876101200151600881111561207a5761207a6139c3565b145b1561218357806020015173ffffffffffffffffffffffffffffffffffffffff16876000015173ffffffffffffffffffffffffffffffffffffffff16146120da576120d5846ec097ce7bc90715b34b9f1000000000613985565b6120dc565b835b60c08201528651602082015173ffffffffffffffffffffffffffffffffffffffff908116911614612111578660600151612117565b86604001515b60ff1660e08201528651602082015173ffffffffffffffffffffffffffffffffffffffff90811691161461214f578660400151612155565b86606001515b60ff168161010001818152505061217b83606001518860800151838a6101200151612e89565b606085015283525b6121a08360600151886040015160ff16896060015160ff166119e4565b602084015260c08701518351670de0b6b3a7640000916121bf916139ac565b6121c99190613985565b608084015260a08701516020840151670de0b6b3a7640000916121eb916139ac565b6121f59190613985565b60a08401819052608084015111156122255760008360a00151846080015161221d9190613999565b905050612287565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f2070726f666974000000000000000000000000000000000000000000000060448201526064016103ff565b50505050505050565b6122c96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000612308856000015186602001518861014001518960a001518a60c001518b60e001516000015161ffff168c61010001516020015161ffff166129ae565b905061231d816012886060015160ff166119e4565b9050670de0b6b3a76400008660c001518261233891906139ac565b6123429190613985565b6040830152606086015161235790600a613dfc565b61236290601e6139ac565b8260400151101561237457505061060f565b61237e8482612aa6565b6060830181905260000361239357505061060f565b61243a604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081525090565b60208088015173ffffffffffffffffffffffffffffffffffffffff90811683526080890151604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290519190921692630dfe168192600480820193918290030181865afa1580156124b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d7919061390a565b73ffffffffffffffffffffffffffffffffffffffff90811660208301526000805490911660608301528761012001516008811115612517576125176139c3565b036125a057608087015173ffffffffffffffffffffffffffffffffffffffff16604082015260208601516060880151612556919060129060ff166119e4565b608082015285516040880151612572919060129060ff166119e4565b60a08201526060830151608088015161014089015161259992919061ffff16846001612ac0565b8352612799565b600187610120015160088111156125b9576125b96139c3565b14806125db5750600287610120015160088111156125d9576125d96139c3565b145b156126155760808701805173ffffffffffffffffffffffffffffffffffffffff166040830152606084015190516125999190836001612c61565b6003876101200151600881111561262e5761262e6139c3565b148061265057506004876101200151600881111561264e5761264e6139c3565b145b8061267157506005876101200151600881111561266f5761266f6139c3565b145b80612692575060078761012001516008811115612690576126906139c3565b145b1561279957806020015173ffffffffffffffffffffffffffffffffffffffff16876000015173ffffffffffffffffffffffffffffffffffffffff16146126f0576126eb846ec097ce7bc90715b34b9f1000000000613985565b6126f2565b835b60c08201528651602082015173ffffffffffffffffffffffffffffffffffffffff90811691161461272757866060015161272d565b86604001515b60ff1660e08201528651602082015173ffffffffffffffffffffffffffffffffffffffff90811691161461276557866040015161276b565b86606001515b60ff168161010001818152505061279183606001518860800151838a6101200151612e89565b606085015283525b6127b68360600151886060015160ff16896040015160ff166119e4565b602084015260a08701518351670de0b6b3a7640000916127d5916139ac565b6127df9190613985565b608084015260c08701516020840151670de0b6b3a7640000916121eb916139ac565b6000612863826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130f29092919063ffffffff16565b90508051600014806128845750808060200190518101906128849190613e0b565b612910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103ff565b505050565b600080806129238587613cbd565b905061293784670de0b6b3a7640000613cbd565b61294182866139ac565b61294b9190613985565b92506129578382613999565b9150600061296485610615565b9050670de0b6b3a764000061297982866139ac565b6129839190613985565b9350670de0b6b3a764000061299882856139ac565b6129a29190613985565b92505050935093915050565b6000670de0b6b3a76400006129c3868a6139ac565b6129cd9190613985565b9750670de0b6b3a76400006129e285896139ac565b6129ec9190613985565b9650826129fb886127106139ac565b612a059190613985565b965081612a14896127106139ac565b612a1e9190613985565b97506000612a2c888a6139ac565b90506000612a3b8960646139ac565b612a51612a4c61ffff8b16856139ac565b613101565b612a5b9190613999565b612a669060646139ac565b9050612a7661ffff891682613985565b9050600086612a8d83670de0b6b3a76400006139ac565b612a979190613985565b9b9a5050505050505050505050565b6000818310612ab55781612ab7565b825b90505b92915050565b600080612ad78785608001518660a00151886131ba565b90506000846000015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614612b1c5781612b1f565b60005b90506000856000015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff1614612b65576000612b67565b825b90508415612b9b5785516000546040880151612b9b929173ffffffffffffffffffffffffffffffffffffffff16908c61194f565b8773ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838960600151600067ffffffffffffffff811115612bd857612bd86134ca565b6040519080825280601f01601f191660200182016040528015612c02576020820181803683370190505b506040518563ffffffff1660e01b8152600401612c229493929190613e94565b600060405180830381600087803b158015612c3c57600080fd5b505af1158015612c50573d6000803e3d6000fd5b50949b9a5050505050505050505050565b81516040517ff140a35a0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff918216602482015260009182919086169063f140a35a90604401602060405180830381865afa158015612cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0091906139f2565b90506000846000015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614612d455781612d48565b60005b90506000856000015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff1614612d8e576000612d90565b825b90508415612dc45785516000546040880151612dc4929173ffffffffffffffffffffffffffffffffffffffff16908b61194f565b8673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838960600151600067ffffffffffffffff811115612e0157612e016134ca565b6040519080825280601f01601f191660200182016040528015612e2b576020820181803683370190505b506040518563ffffffff1660e01b8152600401612e4b9493929190613e94565b600060405180830381600087803b158015612e6557600080fd5b505af1158015612e79573d6000803e3d6000fd5b50949a9950505050505050505050565b81516040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152600091829182910160405160208183030381529060405290506000856000015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff1614612f09576000612f0c565b60015b90506000612f288760c001518860e0015189610100015161320b565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b1617905590506000806007886008811115612f8157612f816139c3565b036130305760608901516040517f24b31a0c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c16916324b31a0c91612fe491908f90899089908c90600401613ed9565b60408051808303816000875af1158015613002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130269190613f20565b90925090506130bd565b8973ffffffffffffffffffffffffffffffffffffffff1663128acb088a60600151868e878a6040518663ffffffff1660e01b8152600401613075959493929190613f44565b60408051808303816000875af1158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190613f20565b90925090505b836130c857816130ca565b805b6130d390613f8b565b9650836130e057806130e2565b815b9550505050505094509492505050565b6060611a378484600085613270565b60b5817101000000000000000000000000000000000081106131285760409190911b9060801c5b690100000000000000000081106131445760209190911b9060401c5b65010000000000811061315c5760109190911b9060201c5b630100000081106131725760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c8082048111156131b55781045b919050565b6000806131c783876139ac565b905060006131d585836139ac565b90506000826131e6886127106139ac565b6131f09190613cbd565b905060006131fe8284613985565b9998505050505050505050565b600078010000000000000000000000000000000000000000000000008183613234866012613cbd565b61323e9190613999565b61324990600a613df0565b905060006132658761325b8486613985565b612a4c91906139ac565b979650505050505050565b606082471015613302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103ff565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161332b9190613fc3565b60006040518083038185875af1925050503d8060008114613368576040519150601f19603f3d011682016040523d82523d6000602084013e61336d565b606091505b5091509150613265878383876060831561340f5782516000036134085773ffffffffffffffffffffffffffffffffffffffff85163b613408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ff565b5081611a37565b611a3783838151156134245781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff9190613fdf565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156134985780818660040360031b1b83161692505b505092915050565b600080858511156134b057600080fd5b838611156134bd57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561351d5761351d6134ca565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561356a5761356a6134ca565b604052919050565b60008060006060848603121561358757600080fd5b833592506020808501359250604085013567ffffffffffffffff808211156135ae57600080fd5b818701915087601f8301126135c257600080fd5b8135818111156135d4576135d46134ca565b613604847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613523565b9150808252888482850101111561361a57600080fd5b80848401858401376000848284010152508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461365a57600080fd5b50565b80356131b581613638565b60006020828403121561367a57600080fd5b81356106a081613638565b6000806000806060858703121561369b57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156136c157600080fd5b818701915087601f8301126136d557600080fd5b8135818111156136e457600080fd5b8860208285010111156136f657600080fd5b95989497505060200194505050565b60006020828403121561371757600080fd5b5035919050565b60ff8116811461365a57600080fd5b80356131b58161371e565b61ffff8116811461365a57600080fd5b80356131b581613738565b60006040828403121561376557600080fd5b6040516040810181811067ffffffffffffffff82111715613788576137886134ca565b604052905080823561379981613738565b815260208301356137a981613738565b6020919091015292915050565b8035600981106131b557600080fd5b60006101c082840312156137d857600080fd5b6137e06134f9565b6137e98361365d565b81526137f76020840161365d565b60208201526138086040840161372d565b60408201526138196060840161372d565b606082015261382a6080840161365d565b608082015260a083013560a082015260c083013560c08201526138508460e08501613753565b60e082015261012061386485828601613753565b6101008301526101606138788186016137b6565b828401526138896101808601613748565b6101408401526101a08501358184015250508091505092915050565b600080604083850312156138b857600080fd5b82356138c381613638565b915060208301356138d381613638565b809150509250929050565b600080604083850312156138f157600080fd5b82356138fc81613638565b946020939093013593505050565b60006020828403121561391c57600080fd5b81516106a081613638565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008261399457613994613927565b500490565b81810381811115612aba57612aba613956565b8082028115828204841417612aba57612aba613956565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215613a0457600080fd5b5051919050565b8051600281900b81146131b557600080fd5b805180151581146131b557600080fd5b600080600080600080600060e0888a031215613a4857600080fd5b8751613a5381613638565b9650613a6160208901613a0b565b95506040880151613a7181613738565b6060890151909550613a8281613738565b6080890151909450613a9381613738565b60a0890151909350613aa48161371e565b9150613ab260c08901613a1d565b905092959891949750929550565b600080600080600080600060e0888a031215613adb57600080fd5b8751613ae681613638565b9650613af460208901613a0b565b95506040880151613b0481613738565b6060890151909550613b1581613738565b6080890151909450613b2681613738565b60a089015190935063ffffffff81168114613aa457600080fd5b60008060008060808587031215613b5657600080fd5b8451613b6181613638565b9350613b6f60208601613a0b565b9250613b7d60408601613a0b565b9150613b8b60608601613a1d565b905092959194509250565b600080600080600080600060e0888a031215613bb157600080fd5b8751613bbc81613638565b9650613bca60208901613a0b565b95506040880151613bda81613738565b6060890151909550613beb81613738565b6080890151909450613a938161371e565b600061ffff80841680613c1157613c11613927565b92169190910492915050565b61ffff828116828216039080821115613c3857613c38613956565b5092915050565b80516fffffffffffffffffffffffffffffffff811681146131b557600080fd5b600080600060608486031215613c7457600080fd5b613c7d84613c3f565b9250613c8b60208501613c3f565b9150613c9960408501613c3f565b90509250925092565b600060208284031215613cb457600080fd5b612ab782613c3f565b80820180821115612aba57612aba613956565b600181815b80851115613d2957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613d0f57613d0f613956565b80851615613d1c57918102915b93841c9390800290613cd5565b509250929050565b600082613d4057506001612aba565b81613d4d57506000612aba565b8160018114613d635760028114613d6d57613d89565b6001915050612aba565b60ff841115613d7e57613d7e613956565b50506001821b612aba565b5060208310610133831016604e8410600b8410161715613dac575081810a612aba565b613db68383613cd0565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613de857613de8613956565b029392505050565b6000612ab78383613d31565b6000612ab760ff841683613d31565b600060208284031215613e1d57600080fd5b612ab782613a1d565b60005b83811015613e41578181015183820152602001613e29565b50506000910152565b60008151808452613e62816020860160208601613e26565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000613ecf6080830184613e4a565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352866020840152851515604084015280851660608401525060a0608083015261326560a0830184613e4a565b60008060408385031215613f3357600080fd5b505080516020909101519092909150565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261326560a0830184613e4a565b60007f80000000000000000000000000000000000000000000000000000000000000008203613fbc57613fbc613956565b5060000390565b60008251613fd5818460208701613e26565b9190910192915050565b602081526000612ab76020830184613e4a56fea26469706673582212205a46cf96fa1c2ba5a66ea3aed6e37b84d2e5575483c7a94188cd743c65234b8864736f6c63430008130033
0x6080604052600436106100d65760003560e01c806376cdb03b1161007f578063ac8a584a11610059578063ac8a584a14610322578063fa461e3314610342578063fa483e7214610207578063fba2d3bd14610362576100dd565b806376cdb03b146102755780639870d7fe146102c7578063a32ce11e146102e7576100dd565b80632c8958f6116100b05780632c8958f61461020757806330de70c0146102275780633752374514610255576100dd565b8063090d23b9146101a057806313e7c9d8146101c257806323a69e7514610207576100dd565b366100dd57005b3480156100e957600080fd5b5060003660606100f98284613458565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916635bee97a360e01b148061015b5750610132366000613458565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191663ae067e0f60e01b145b1561019557600080606061017285600481896134a0565b81019061017f9190613572565b91945092509050610191838383610382565b5050505b915050805190602001f35b3480156101ac57600080fd5b506101c06101bb366004613668565b610506565b005b3480156101ce57600080fd5b506101f26101dd366004613668565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b506101c0610222366004613685565b6105ce565b34801561023357600080fd5b50610247610242366004613705565b610615565b6040519081526020016101fe565b34801561026157600080fd5b506101c06102703660046137c5565b6106b7565b34801561028157600080fd5b506000546102a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102d357600080fd5b506101c06102e2366004613668565b61169e565b3480156102f357600080fd5b506101f26103023660046138a5565b600260209081526000928352604080842090915290825290205460ff1681565b34801561032e57600080fd5b506101c061033d366004613668565b611771565b34801561034e57600080fd5b506101c061035d366004613572565b610382565b34801561036e57600080fd5b506101c061037d3660046138de565b61183e565b60035473ffffffffffffffffffffffffffffffffffffffff163314610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f756e617574686f72697a65642063616c6c65720000000000000000000000000060448201526064015b60405180910390fd5b3260009081526001602081905260409091205460ff161515146104ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f41682061682061682c20796f75206469646e27742073617920746865206d616760448201527f696320776f72640000000000000000000000000000000000000000000000000060648201526084016103ff565b60008084136104bc57826104be565b835b90506000828060200190518101906104d6919061390a565b6000549091506104ff90829073ffffffffffffffffffffffffffffffffffffffff16338561194f565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61060f848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038292505050565b50505050565b600080670de0b6b3a7640000831061062d5782610646565b610646836ec097ce7bc90715b34b9f1000000000613985565b9050671158e460913d000081116106a7576703782dace9d90000610672670de0b6b3a764000083613999565b61068490673782dace9d9000006139ac565b61068e9190613985565b6106a090674563918244f40000613999565b9392505050565b50670de0b6b3a764000092915050565b3360009081526001602081905260409091205460ff1615151461075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f41682061682061682c20796f75206469646e27742073617920746865206d616760448201527f696320776f72640000000000000000000000000000000000000000000000000060648201526084016103ff565b6040805180820190915260008082526020820152600061079d6040518060800160405280600081526020016000815260200160008152602001600081525090565b6101608401516c010000000000000000000000009042111561081b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f455850495245440000000000000000000000000000000000000000000000000060448201526064016103ff565b60008561012001516008811115610834576108346139c3565b1480610856575060028561012001516008811115610854576108546139c3565b145b156109e557845160808601516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526109079291909116906370a0823190602401602060405180830381865afa1580156108d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f891906139f2565b866040015160ff1660126119e4565b8452602085015160808601516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526109b89291909116906370a0823190602401602060405180830381865afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a991906139f2565b866060015160ff1660126119e4565b602085018190528451906109d490670de0b6b3a76400006139ac565b6109de9190613985565b9250611136565b600185610120015160088111156109fe576109fe6139c3565b03610b165760008560a001516ec097ce7bc90715b34b9f1000000000610a249190613985565b90506000610a3b826012896040015160ff166119e4565b608088015188516040517ff140a35a0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9182166024820152929350169063f140a35a90604401602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb91906139f2565b945081610af186896060015160ff1660126119e4565b610b0390670de0b6b3a76400006139ac565b610b0d9190613985565b94505050611136565b60038561012001516008811115610b2f57610b2f6139c3565b1480610b51575060048561012001516008811115610b4f57610b4f6139c3565b145b80610b72575060058561012001516008811115610b7057610b706139c3565b145b80610b93575060078561012001516008811115610b9157610b916139c3565b145b156110d457600060038661012001516008811115610bb357610bb36139c3565b03610c3a57856080015173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b9190613a2d565b50949550610e0f945050505050565b60058661012001516008811115610c5357610c536139c3565b03610ccb57856080015173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b9190613ac0565b60078661012001516008811115610ce457610ce46139c3565b03610d6857856080015173ffffffffffffffffffffffffffffffffffffffff1663217ac2376040518163ffffffff1660e01b8152600401608060405180830381865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190613b40565b50919250610e0f915050565b6000866080015173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddd9190613b96565b50949650919450610df7935060649250849150613bfc9050565b610e0390612710613c1d565b61ffff16610140880152505b600060078761012001516008811115610e2a57610e2a6139c3565b03610ebd57866080015173ffffffffffffffffffffffffffffffffffffffff1663ab612f2b6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190613c5f565b50506fffffffffffffffffffffffffffffffff169050610f45565b866080015173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f309190613ca2565b6fffffffffffffffffffffffffffffffff1690505b866000015173ffffffffffffffffffffffffffffffffffffffff16876080015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd3919061390a565b73ffffffffffffffffffffffffffffffffffffffff160361103c5761100f81848473ffffffffffffffffffffffffffffffffffffffff16611a3f565b86526110328173ffffffffffffffffffffffffffffffffffffffff841685611a3f565b6020870152611086565b61105d818373ffffffffffffffffffffffffffffffffffffffff1685611a3f565b8652611080818473ffffffffffffffffffffffffffffffffffffffff8516611a3f565b60208701525b61109d8660000151886040015160ff1660126119e4565b8652602086015160608801516110b8919060ff1660126119e4565b60208701819052865190610b0390670de0b6b3a76400006139ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e6b6e6f776e2070726f746f636f6c20666f72206d3000000000000000000060448201526064016103ff565b60008560c001518660a00151670de0b6b3a764000061115591906139ac565b61115f9190613985565b9050600086610140015161ffff168261271061117b91906139ac565b6111859190613985565b90508661010001516000015161ffff168760e001516020015161ffff16826111ad91906139ac565b6111b79190613985565b9050600061271088610140015161ffff16846111d391906139ac565b6111dd9190613985565b90508761010001516020015161ffff168860e001516000015161ffff168261120591906139ac565b61120f9190613985565b9050818610158061121f57508086105b1561165357875160208901516000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908316906370a0823190602401602060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf91906139f2565b87526000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908216906370a0823190602401602060405180830381865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135591906139f2565b6020880181905260c08b015160608c0151670de0b6b3a76400009261137e9160ff1660126119e4565b61138891906139ac565b6113929190613985565b670de0b6b3a76400008b60a001516113b78a600001518e6040015160ff1660126119e4565b6113c191906139ac565b6113cb9190613985565b6113d59190613cbd565b604088015260018a610120015160088111156113f3576113f36139c3565b0361140657611403898b8a611b0c565b98505b8388106114225761141d8a8a896000015187611c9e565b611432565b6114328a8a896020015186612290565b6000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908316906370a0823190602401602060405180830381865afa1580156114a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c691906139f2565b87526000546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908216906370a0823190602401602060405180830381865afa158015611538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c91906139f2565b6020880181905260c08b015160608c0151670de0b6b3a7640000926115859160ff1660126119e4565b61158f91906139ac565b6115999190613985565b670de0b6b3a76400008b60a001516115be8a600001518e6040015160ff1660126119e4565b6115c891906139ac565b6115d29190613985565b6115dc9190613cbd565b6060880181905260408801511115611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f76616c75655f6265666f7265203e2076616c75655f616674657200000000000060448201526064016103ff565b50505b60408051878152602081018490529081018290527f025a6d0108b37e941a995ef90f53742eae364e0173bdc394f5ca4cd87ea6a5ba9060600160405180910390a15050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461171f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7065202d204e6f742062616e6b000000000000000000000000000000000060448201526064016103ff565b6000546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018390529083169063a9059cbb90604401600060405180830381600087803b15801561193357600080fd5b505af1158015611947573d6000803e3d6000fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261060f908590612801565b60008082841115611a15576119f98385613999565b611a0490600a613df0565b611a0e9086613985565b9050611a37565b611a1f8484613999565b611a2a90600a613df0565b611a3490866139ac565b90505b949350505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611a9757838281611a8d57611a8d613927565b04925050506106a0565b808411611aa357600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080518082018252600080825260208201528351608085015192517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529192611bca929116906370a0823190602401602060405180830381865afa158015611b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbb91906139f2565b846040015160ff1660126119e4565b8452602083015160808401516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152611c7b9291909116906370a0823190602401602060405180830381865afa158015611c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6c91906139f2565b846060015160ff1660126119e4565b602085018190528451611c8f919084612915565b85526020850152509192915050565b611cd76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000611d16856020015186600001518861014001518960c001518a60a001518b61010001516000015161ffff168c60e001516020015161ffff166129ae565b9050611d2b816012886040015160ff166119e4565b9050670de0b6b3a76400008660a0015182611d4691906139ac565b611d509190613985565b604080840191909152860151611d6790600a613dfc565b611d7290601e6139ac565b82604001511015611d8457505061060f565b611d8e8482612aa6565b60608301819052600003611da357505061060f565b611e4a604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081525090565b866080015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebd919061390a565b73ffffffffffffffffffffffffffffffffffffffff90811660208301528751811682526000805490911660608301528761012001516008811115611f0357611f036139c3565b03611f8a57611f1f86600001516012896040015160ff166119e4565b608082015260208601516060880151611f3e919060129060ff166119e4565b60a082015260808701805173ffffffffffffffffffffffffffffffffffffffff16604083015260608401519051610140890151611f8392919061ffff16846001612ac0565b8352612183565b60018761012001516008811115611fa357611fa36139c3565b1480611fc5575060028761012001516008811115611fc357611fc36139c3565b145b15611fff5760808701805173ffffffffffffffffffffffffffffffffffffffff16604083015260608401519051611f839190836001612c61565b60038761012001516008811115612018576120186139c3565b148061203a575060048761012001516008811115612038576120386139c3565b145b8061205b575060058761012001516008811115612059576120596139c3565b145b8061207c57506007876101200151600881111561207a5761207a6139c3565b145b1561218357806020015173ffffffffffffffffffffffffffffffffffffffff16876000015173ffffffffffffffffffffffffffffffffffffffff16146120da576120d5846ec097ce7bc90715b34b9f1000000000613985565b6120dc565b835b60c08201528651602082015173ffffffffffffffffffffffffffffffffffffffff908116911614612111578660600151612117565b86604001515b60ff1660e08201528651602082015173ffffffffffffffffffffffffffffffffffffffff90811691161461214f578660400151612155565b86606001515b60ff168161010001818152505061217b83606001518860800151838a6101200151612e89565b606085015283525b6121a08360600151886040015160ff16896060015160ff166119e4565b602084015260c08701518351670de0b6b3a7640000916121bf916139ac565b6121c99190613985565b608084015260a08701516020840151670de0b6b3a7640000916121eb916139ac565b6121f59190613985565b60a08401819052608084015111156122255760008360a00151846080015161221d9190613999565b905050612287565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f2070726f666974000000000000000000000000000000000000000000000060448201526064016103ff565b50505050505050565b6122c96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000612308856000015186602001518861014001518960a001518a60c001518b60e001516000015161ffff168c61010001516020015161ffff166129ae565b905061231d816012886060015160ff166119e4565b9050670de0b6b3a76400008660c001518261233891906139ac565b6123429190613985565b6040830152606086015161235790600a613dfc565b61236290601e6139ac565b8260400151101561237457505061060f565b61237e8482612aa6565b6060830181905260000361239357505061060f565b61243a604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081525090565b60208088015173ffffffffffffffffffffffffffffffffffffffff90811683526080890151604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290519190921692630dfe168192600480820193918290030181865afa1580156124b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d7919061390a565b73ffffffffffffffffffffffffffffffffffffffff90811660208301526000805490911660608301528761012001516008811115612517576125176139c3565b036125a057608087015173ffffffffffffffffffffffffffffffffffffffff16604082015260208601516060880151612556919060129060ff166119e4565b608082015285516040880151612572919060129060ff166119e4565b60a08201526060830151608088015161014089015161259992919061ffff16846001612ac0565b8352612799565b600187610120015160088111156125b9576125b96139c3565b14806125db5750600287610120015160088111156125d9576125d96139c3565b145b156126155760808701805173ffffffffffffffffffffffffffffffffffffffff166040830152606084015190516125999190836001612c61565b6003876101200151600881111561262e5761262e6139c3565b148061265057506004876101200151600881111561264e5761264e6139c3565b145b8061267157506005876101200151600881111561266f5761266f6139c3565b145b80612692575060078761012001516008811115612690576126906139c3565b145b1561279957806020015173ffffffffffffffffffffffffffffffffffffffff16876000015173ffffffffffffffffffffffffffffffffffffffff16146126f0576126eb846ec097ce7bc90715b34b9f1000000000613985565b6126f2565b835b60c08201528651602082015173ffffffffffffffffffffffffffffffffffffffff90811691161461272757866060015161272d565b86604001515b60ff1660e08201528651602082015173ffffffffffffffffffffffffffffffffffffffff90811691161461276557866040015161276b565b86606001515b60ff168161010001818152505061279183606001518860800151838a6101200151612e89565b606085015283525b6127b68360600151886060015160ff16896040015160ff166119e4565b602084015260a08701518351670de0b6b3a7640000916127d5916139ac565b6127df9190613985565b608084015260c08701516020840151670de0b6b3a7640000916121eb916139ac565b6000612863826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130f29092919063ffffffff16565b90508051600014806128845750808060200190518101906128849190613e0b565b612910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103ff565b505050565b600080806129238587613cbd565b905061293784670de0b6b3a7640000613cbd565b61294182866139ac565b61294b9190613985565b92506129578382613999565b9150600061296485610615565b9050670de0b6b3a764000061297982866139ac565b6129839190613985565b9350670de0b6b3a764000061299882856139ac565b6129a29190613985565b92505050935093915050565b6000670de0b6b3a76400006129c3868a6139ac565b6129cd9190613985565b9750670de0b6b3a76400006129e285896139ac565b6129ec9190613985565b9650826129fb886127106139ac565b612a059190613985565b965081612a14896127106139ac565b612a1e9190613985565b97506000612a2c888a6139ac565b90506000612a3b8960646139ac565b612a51612a4c61ffff8b16856139ac565b613101565b612a5b9190613999565b612a669060646139ac565b9050612a7661ffff891682613985565b9050600086612a8d83670de0b6b3a76400006139ac565b612a979190613985565b9b9a5050505050505050505050565b6000818310612ab55781612ab7565b825b90505b92915050565b600080612ad78785608001518660a00151886131ba565b90506000846000015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614612b1c5781612b1f565b60005b90506000856000015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff1614612b65576000612b67565b825b90508415612b9b5785516000546040880151612b9b929173ffffffffffffffffffffffffffffffffffffffff16908c61194f565b8773ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838960600151600067ffffffffffffffff811115612bd857612bd86134ca565b6040519080825280601f01601f191660200182016040528015612c02576020820181803683370190505b506040518563ffffffff1660e01b8152600401612c229493929190613e94565b600060405180830381600087803b158015612c3c57600080fd5b505af1158015612c50573d6000803e3d6000fd5b50949b9a5050505050505050505050565b81516040517ff140a35a0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff918216602482015260009182919086169063f140a35a90604401602060405180830381865afa158015612cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0091906139f2565b90506000846000015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff1614612d455781612d48565b60005b90506000856000015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff1614612d8e576000612d90565b825b90508415612dc45785516000546040880151612dc4929173ffffffffffffffffffffffffffffffffffffffff16908b61194f565b8673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838960600151600067ffffffffffffffff811115612e0157612e016134ca565b6040519080825280601f01601f191660200182016040528015612e2b576020820181803683370190505b506040518563ffffffff1660e01b8152600401612e4b9493929190613e94565b600060405180830381600087803b158015612e6557600080fd5b505af1158015612e79573d6000803e3d6000fd5b50949a9950505050505050505050565b81516040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152600091829182910160405160208183030381529060405290506000856000015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff1614612f09576000612f0c565b60015b90506000612f288760c001518860e0015189610100015161320b565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b1617905590506000806007886008811115612f8157612f816139c3565b036130305760608901516040517f24b31a0c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c16916324b31a0c91612fe491908f90899089908c90600401613ed9565b60408051808303816000875af1158015613002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130269190613f20565b90925090506130bd565b8973ffffffffffffffffffffffffffffffffffffffff1663128acb088a60600151868e878a6040518663ffffffff1660e01b8152600401613075959493929190613f44565b60408051808303816000875af1158015613093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b79190613f20565b90925090505b836130c857816130ca565b805b6130d390613f8b565b9650836130e057806130e2565b815b9550505050505094509492505050565b6060611a378484600085613270565b60b5817101000000000000000000000000000000000081106131285760409190911b9060801c5b690100000000000000000081106131445760209190911b9060401c5b65010000000000811061315c5760109190911b9060201c5b630100000081106131725760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c8082048111156131b55781045b919050565b6000806131c783876139ac565b905060006131d585836139ac565b90506000826131e6886127106139ac565b6131f09190613cbd565b905060006131fe8284613985565b9998505050505050505050565b600078010000000000000000000000000000000000000000000000008183613234866012613cbd565b61323e9190613999565b61324990600a613df0565b905060006132658761325b8486613985565b612a4c91906139ac565b979650505050505050565b606082471015613302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103ff565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161332b9190613fc3565b60006040518083038185875af1925050503d8060008114613368576040519150601f19603f3d011682016040523d82523d6000602084013e61336d565b606091505b5091509150613265878383876060831561340f5782516000036134085773ffffffffffffffffffffffffffffffffffffffff85163b613408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ff565b5081611a37565b611a3783838151156134245781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff9190613fdf565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156134985780818660040360031b1b83161692505b505092915050565b600080858511156134b057600080fd5b838611156134bd57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561351d5761351d6134ca565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561356a5761356a6134ca565b604052919050565b60008060006060848603121561358757600080fd5b833592506020808501359250604085013567ffffffffffffffff808211156135ae57600080fd5b818701915087601f8301126135c257600080fd5b8135818111156135d4576135d46134ca565b613604847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613523565b9150808252888482850101111561361a57600080fd5b80848401858401376000848284010152508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461365a57600080fd5b50565b80356131b581613638565b60006020828403121561367a57600080fd5b81356106a081613638565b6000806000806060858703121561369b57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156136c157600080fd5b818701915087601f8301126136d557600080fd5b8135818111156136e457600080fd5b8860208285010111156136f657600080fd5b95989497505060200194505050565b60006020828403121561371757600080fd5b5035919050565b60ff8116811461365a57600080fd5b80356131b58161371e565b61ffff8116811461365a57600080fd5b80356131b581613738565b60006040828403121561376557600080fd5b6040516040810181811067ffffffffffffffff82111715613788576137886134ca565b604052905080823561379981613738565b815260208301356137a981613738565b6020919091015292915050565b8035600981106131b557600080fd5b60006101c082840312156137d857600080fd5b6137e06134f9565b6137e98361365d565b81526137f76020840161365d565b60208201526138086040840161372d565b60408201526138196060840161372d565b606082015261382a6080840161365d565b608082015260a083013560a082015260c083013560c08201526138508460e08501613753565b60e082015261012061386485828601613753565b6101008301526101606138788186016137b6565b828401526138896101808601613748565b6101408401526101a08501358184015250508091505092915050565b600080604083850312156138b857600080fd5b82356138c381613638565b915060208301356138d381613638565b809150509250929050565b600080604083850312156138f157600080fd5b82356138fc81613638565b946020939093013593505050565b60006020828403121561391c57600080fd5b81516106a081613638565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008261399457613994613927565b500490565b81810381811115612aba57612aba613956565b8082028115828204841417612aba57612aba613956565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215613a0457600080fd5b5051919050565b8051600281900b81146131b557600080fd5b805180151581146131b557600080fd5b600080600080600080600060e0888a031215613a4857600080fd5b8751613a5381613638565b9650613a6160208901613a0b565b95506040880151613a7181613738565b6060890151909550613a8281613738565b6080890151909450613a9381613738565b60a0890151909350613aa48161371e565b9150613ab260c08901613a1d565b905092959891949750929550565b600080600080600080600060e0888a031215613adb57600080fd5b8751613ae681613638565b9650613af460208901613a0b565b95506040880151613b0481613738565b6060890151909550613b1581613738565b6080890151909450613b2681613738565b60a089015190935063ffffffff81168114613aa457600080fd5b60008060008060808587031215613b5657600080fd5b8451613b6181613638565b9350613b6f60208601613a0b565b9250613b7d60408601613a0b565b9150613b8b60608601613a1d565b905092959194509250565b600080600080600080600060e0888a031215613bb157600080fd5b8751613bbc81613638565b9650613bca60208901613a0b565b95506040880151613bda81613738565b6060890151909550613beb81613738565b6080890151909450613a938161371e565b600061ffff80841680613c1157613c11613927565b92169190910492915050565b61ffff828116828216039080821115613c3857613c38613956565b5092915050565b80516fffffffffffffffffffffffffffffffff811681146131b557600080fd5b600080600060608486031215613c7457600080fd5b613c7d84613c3f565b9250613c8b60208501613c3f565b9150613c9960408501613c3f565b90509250925092565b600060208284031215613cb457600080fd5b612ab782613c3f565b80820180821115612aba57612aba613956565b600181815b80851115613d2957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613d0f57613d0f613956565b80851615613d1c57918102915b93841c9390800290613cd5565b509250929050565b600082613d4057506001612aba565b81613d4d57506000612aba565b8160018114613d635760028114613d6d57613d89565b6001915050612aba565b60ff841115613d7e57613d7e613956565b50506001821b612aba565b5060208310610133831016604e8410600b8410161715613dac575081810a612aba565b613db68383613cd0565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613de857613de8613956565b029392505050565b6000612ab78383613d31565b6000612ab760ff841683613d31565b600060208284031215613e1d57600080fd5b612ab782613a1d565b60005b83811015613e41578181015183820152602001613e29565b50506000910152565b60008151808452613e62816020860160208601613e26565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000613ecf6080830184613e4a565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352866020840152851515604084015280851660608401525060a0608083015261326560a0830184613e4a565b60008060408385031215613f3357600080fd5b505080516020909101519092909150565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261326560a0830184613e4a565b60007f80000000000000000000000000000000000000000000000000000000000000008203613fbc57613fbc613956565b5060000390565b60008251613fd5818460208701613e26565b9190910192915050565b602081526000612ab76020830184613e4a56fea26469706673582212205a46cf96fa1c2ba5a66ea3aed6e37b84d2e5575483c7a94188cd743c65234b8864736f6c63430008130033