608060405234801561001057600080fd5b5061454a806100206000396000f3fe60806040526004361061021a5760003560e01c80636db7ad4311610123578063b10a8930116100ab578063db0219571161006f578063db02195714610640578063e985e9c514610660578063f2fde38b146106aa578063f7888aec146106ca578063f98cf07c146106ea57600080fd5b8063b10a8930146105a0578063b88d4fde146105c0578063c4d66de8146105e0578063c87b56dd14610600578063d1fde6851461062057600080fd5b80638da5cb5b116100f25780638da5cb5b1461050057806394de89831461051e57806395d89b411461053e578063a1c5158614610553578063a22cb4651461058057600080fd5b80636db7ad43146104a157806370a08231146104b6578063715018a6146104d65780638456cb59146104eb57600080fd5b80633f4ba83a116101a65780635fc5cc50116101755780635fc5cc50146103eb578063617aa3ab146104205780636352211e1461044057806365001bf9146104605780636b42bf2f1461047357600080fd5b80633f4ba83a1461038957806342842e0e1461039e57806358112cd3146103be5780635c975abb146103d357600080fd5b8063150b7a02116101ed578063150b7a02146102d05780631a70dbda1461030957806323b872dd1461032957806329c62aeb146103495780632f29552c1461036957600080fd5b806301ffc9a71461021f57806306fdde0314610254578063081812fc14610276578063095ea7b3146102ae575b600080fd5b34801561022b57600080fd5b5061023f61023a366004613769565b6106fd565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b5061026961074f565b60405161024b91906137de565b34801561028257600080fd5b506102966102913660046137f1565b6107e2565b6040516001600160a01b03909116815260200161024b565b3480156102ba57600080fd5b506102ce6102c936600461382f565b61080a565b005b3480156102dc57600080fd5b506102f06102eb36600461393c565b610924565b6040516001600160e01b0319909116815260200161024b565b34801561031557600080fd5b5061023f6103243660046139a8565b610935565b34801561033557600080fd5b506102ce6103443660046139dd565b610961565b34801561035557600080fd5b506102ce6103643660046139a8565b610992565b34801561037557600080fd5b50610296610384366004613af9565b6109ee565b34801561039557600080fd5b506102ce610a79565b3480156103aa57600080fd5b506102ce6103b93660046139dd565b610a8b565b3480156103ca57600080fd5b506102ce610aa6565b3480156103df57600080fd5b5060655460ff1661023f565b3480156103f757600080fd5b5061040b610406366004613b4a565b610ac4565b6040805192835260208301919091520161024b565b34801561042c57600080fd5b506102ce61043b366004613af9565b610b53565b34801561044c57600080fd5b5061029661045b3660046137f1565b610b8f565b6102ce61046e366004613af9565b610bf0565b34801561047f57600080fd5b5061049361048e3660046139dd565b610ff1565b60405190815260200161024b565b3480156104ad57600080fd5b506102ce611067565b3480156104c257600080fd5b506104936104d1366004613c01565b61107f565b3480156104e257600080fd5b506102ce611106565b3480156104f757600080fd5b506102ce61110e565b34801561050c57600080fd5b506033546001600160a01b0316610296565b34801561052a57600080fd5b506102ce610539366004613c1e565b61111e565b34801561054a57600080fd5b50610269611284565b34801561055f57600080fd5b5061057361056e36600461382f565b611294565b60405161024b9190613cbd565b34801561058c57600080fd5b506102ce61059b366004613d4f565b611363565b3480156105ac57600080fd5b506102ce6105bb36600461382f565b61136e565b3480156105cc57600080fd5b506102ce6105db36600461393c565b611529565b3480156105ec57600080fd5b506102ce6105fb366004613c01565b611561565b34801561060c57600080fd5b5061026961061b3660046137f1565b611749565b34801561062c57600080fd5b506102ce61063b3660046139a8565b6117bc565b34801561064c57600080fd5b5061049361065b366004613d88565b6117f5565b34801561066c57600080fd5b5061023f61067b366004613da5565b6001600160a01b0391821660009081526101346020908152604080832093909416825291909152205460ff1690565b3480156106b657600080fd5b506102ce6106c5366004613c01565b6118dd565b3480156106d657600080fd5b506104936106e5366004613da5565b611953565b6102ce6106f836600461382f565b6119c0565b60006001600160e01b031982166380ac58cd60e01b148061072e57506001600160e01b03198216635b5e139f60e01b145b8061074957506301ffc9a760e01b6001600160e01b03198316145b92915050565b606061012f805461075f90613dd3565b80601f016020809104026020016040519081016040528092919081815260200182805461078b90613dd3565b80156107d85780601f106107ad576101008083540402835291602001916107d8565b820191906000526020600020905b8154815290600101906020018083116107bb57829003601f168201915b5050505050905090565b60006107ed82611e7d565b50600090815261013360205260409020546001600160a01b031690565b600061081582610b8f565b9050806001600160a01b0316836001600160a01b0316036108875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806108a357506108a3813361067b565b6109155760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161087e565b61091f8383611edd565b505050565b630a85bd0160e11b5b949350505050565b6000610196826040516109489190613e0d565b9081526040519081900360200190205460ff1692915050565b61096b3382611f4c565b6109875760405162461bcd60e51b815260040161087e90613e29565b61091f838383611fcb565b610196816040516109a39190613e0d565b9081526040519081900360200190205460ff16156109eb5760405162461bcd60e51b8152602060048201526005602482015264181818199960d91b604482015260640161087e565b50565b6000730f86063683af0223aae3da8efb628cf564badec06319045a25610a13856117f5565b846040518363ffffffff1660e01b8152600401610a31929190613e76565b602060405180830381865af4158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a729190613e8f565b9392505050565b610a8161213f565b610a89612199565b565b61091f83838360405180602001604052806000815250611529565b610aae61213f565b610194805460ff60a01b1916600160a01b179055565b600080600083606001516001600160801b031690508084604001516001600160801b03161015610afe575060408301516001600160801b03165b608084015163ffffffff1615610b4157612710846080015163ffffffff168560400151610b2b9190613ec2565b6001600160801b0316610b3e9190613ef1565b91505b610b4b8282613f13565b925050915091565b610b5b6121eb565b610b6481610992565b610b6d816117bc565b6000610b7983836109ee565b9050610b858133612231565b61091f838361227a565b600081815261013160205260408120546001600160a01b0316806107495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161087e565b610bf86121eb565b610c00612302565b6000610c0c83836109ee565b9050610c21836080015184606001518361235b565b610c2a82610992565b610c33826117bc565b610c3c81612407565b610c4533612407565b60808301516001600160a01b0316610c875760405162461bcd60e51b81526020600482015260056024820152640c0c0c0c0d60da1b604482015260640161087e565b610c90836124d2565b6000610ca484608001518560600151612522565b6003810154909150600160601b900463ffffffff1615610cee5760405162461bcd60e51b8152602060048201526005602482015264181818181b60d91b604482015260640161087e565b620151808460e0015163ffffffff161015610d335760405162461bcd60e51b8152602060048201526005602482015264181818181b60d91b604482015260640161087e565b83602001516001600160801b0316341015610d785760405162461bcd60e51b8152602060048201526005602482015264303030343760d81b604482015260640161087e565b83602001516001600160801b031684600001516001600160801b031611610df15760405162461bcd60e51b815260206004820152602760248201527f7072696365206d7573742062652067726561746572207468616e20646f776e206044820152661c185e5b595b9d60ca1b606482015260840161087e565b83604001516001600160801b031684602001518560000151610e139190613f2b565b6001600160801b031611610e695760405162461bcd60e51b815260206004820152601b60248201527f49737375653a207072696e636970616c2070657220706572696f640000000000604482015260640161087e565b610e73848461227a565b83602001516001600160801b0316341115610eab57610eab84602001516001600160801b031634610ea49190613f53565b339061254a565b6000610ece856080015186606001513388602001516001600160801b031661260d565b9050610efc8186602001516001600160801b0316610eec9190613f53565b6001600160a01b0385169061254a565b61019380549081906000610f0f83613f6a565b9190505550610f1e3382612749565b61019380549081906000610f3183613f6a565b9190505550610f408582612749565b610f69848883858b602001518c60000151610f5b9190613f2b565b6001600160801b0316612763565b610f7d876080015188606001518730612855565b610f9033886080015189606001516128c5565b866060015187608001516001600160a01b03167fa75ac3d663a384054947ae6111fe0a43e7fedb26cb438a554f250a816772eda4878988604051610fd693929190613ffa565b60405180910390a35050505050610fed6001609755565b5050565b6000610ffd8484611953565b82106110335760405162461bcd60e51b8152602060048201526005602482015264303030363960d81b604482015260640161087e565b506001600160a01b039283166000908152610198602090815260408083209490951682529283528381209181529152205490565b61106f61213f565b610194805460ff60a01b19169055565b60006001600160a01b0382166110e95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161087e565b506001600160a01b03166000908152610132602052604090205490565b610a8961213f565b61111661213f565b610a89612950565b6111266121eb565b61112e612302565b600061113a8585612522565b90506111458161298d565b61114e33612407565b61116361115e8260000154610b8f565b612407565b8561117086863084612855565b604051634cd2a52d60e11b81526001600160a01b038216906399a54a5a906111a49033908a908a908a908a9060040161402f565b6020604051808303816000875af11580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e79190614083565b61121b5760405162461bcd60e51b815260206004820152600560248201526406060606a760db1b604482015260640161087e565b61122786868930612855565b604080516001600160a01b0388811682526020820188905289168183015290517f2cf8d68f50ba7442121be5654b71535b7e1fa65c19534b0d9b111f1744bff3e79181900360600190a1505061127d6001609755565b5050505050565b6060610130805461075f90613dd3565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526112df8383612522565b6040805161010081018252825481526001830154602082015260028301546001600160801b0380821693830193909352600160801b9004909116606082015260039091015463ffffffff80821660808401526401000000008204811660a0840152600160401b8204811660c0840152600160601b9091041660e08201529392505050565b610fed3383836129e0565b6113766121eb565b61137e612302565b600061138a8383612522565b9050600061139b8260000154610b8f565b905060006113ac8360010154610b8f565b90506113b781612407565b60028301546001600160801b03166000036114025760405162461bcd60e51b815260206004820152600b60248201526a1b1bd85b881c995c185a5960aa1b604482015260640161087e565b6003830154600160401b900463ffffffff1661141c612aaf565b63ffffffff16116114645760405162461bcd60e51b81526020600482015260126024820152714173736574206e6f74207365697a61626c6560701b604482015260640161087e565b61147085853084612855565b61147b828686612abf565b825461148690612bd1565b6114938360010154612bd1565b83856001600160a01b03167f0d225a8140ae052e5ff0a242f9ea8f53e8503e24330d2876ff4e83a0d6854340856040516114cd91906140a0565b60405180910390a35050506001600160a01b038216600090815261019560209081526040808320848452909152812081815560018101829055600281019190915560030180546001600160801b0319169055610fed6001609755565b6115333383611f4c565b61154f5760405162461bcd60e51b815260040161087e90613e29565b61155b84848484612c77565b50505050565b600054610100900460ff16158080156115815750600054600160ff909116105b8061159b5750303b15801561159b575060005460ff166001145b6115fe5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161087e565b6000805460ff191660011790558015611621576000805461ff0019166101001790555b61167d6040518060400160405280601981526020017f4e69667479417065735f53656c6c657246696e616e63696e670000000000000081525060405180604001604052806005815260200164302e302e3160d81b815250612caa565b611685612cdb565b61168d612d0a565b611695612d39565b61169d612d68565b6116de6040518060600160405280602281526020016144f3602291396040518060400160405280600781526020016642414e414e415360c81b815250612d8f565b60006101935561019480546001600160a01b0319166001600160a01b0384161790558015610fed576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b606061175482611e7d565b600061176b60408051602081019091526000815290565b9050600081511161178b5760405180602001604052806000815250610a72565b8061179584612dc0565b6040516020016117a69291906140af565b6040516020818303038152906040529392505050565b80516041146109eb5760405162461bcd60e51b8152602060048201526005602482015264303030303360d81b604482015260640161087e565b60006107497f3ca3a950751f1457b4e147daa0003cf1c7d030b59fc6aabe78e3013301eb74f8836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001516040516020016118c29a99989796959493929190998a526001600160801b0398891660208b015296881660408a015294909616606088015260808701929092526001600160a01b0390811660a08701521660c085015263ffffffff92831660e08501528216610100840152166101208201526101400190565b60405160208183030381529060405280519060200120612e53565b6118e561213f565b6001600160a01b03811661194a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087e565b6109eb81612ea1565b60006001600160a01b0383166119935760405162461bcd60e51b8152602060048201526005602482015264303030333560d81b604482015260640161087e565b506001600160a01b0391821660009081526101976020908152604080832093909416825291909152205490565b6119c86121eb565b6119d0612302565b60006119dc8383612522565b905060006119ed8260000154610b8f565b905060006119fe8360010154610b8f565b9050611a0982612407565b611a1233612407565b611a1b83612ef3565b6003830154611a419063ffffffff6401000000008204811691600160401b9004166140de565b63ffffffff16611a4f612aaf565b63ffffffff1610611ab65760405162461bcd60e51b815260206004820152602b60248201527f63616e6e6f74206d616b65207061796d656e742c207061737420736f6674206760448201526a1c9858d9481c195c9a5bd960aa1b606482015260840161087e565b60038301546000908190600160601b900463ffffffff16611ad5612aaf565b63ffffffff1610611b6b576040805161010081018252865481526001870154602082015260028701546001600160801b0380821693830193909352600160801b90049091166060820152600386015463ffffffff80821660808401526401000000008204811660a0840152600160401b8204811660c0840152600160601b9091041660e0820152611b6590610ac4565b90925090505b6002850154600090611b879083906001600160801b0316613f13565b90503483811015611bc25760405162461bcd60e51b8152602060048201526005602482015264303030343760d81b604482015260640161087e565b81811115611bea57611be7611bd78383613f53565b6001600160a01b0388169061254a565b50805b6000611bf88a8a898561260d565b9050611c0e8688611c098486613f53565b612f38565b611c188483613f53565b600289018054600090611c359084906001600160801b0316613f2b565b82546101009290920a6001600160801b0381810219909316918316021790915560028a0154166000039050611d6957611c708a8a308a612855565b611c7b878b8b612abf565b8754611c8690612bd1565b611c938860010154612bd1565b888a6001600160a01b03167fe85390cae77efd3c4d367f60c9639faa9cd0adb604b728c40885d92446ed47628484888d604051611cd394939291906140fd565b60405180910390a3888a6001600160a01b03167f2da08be9a9e192f9e84f2e01c6f2449022fd87ebd8d4a9daa31303b18cd13b918a604051611d1591906140a0565b60405180910390a36001600160a01b038a166000908152610195602090815260408083208c8452909152812081815560018101829055600281019190915560030180546001600160801b0319169055611e6b565b6003880154600160601b900463ffffffff16611d83612aaf565b63ffffffff1610611e225760038801805463ffffffff640100000000820481169291600c91611dbc918591600160601b909104166140de565b82546101009290920a63ffffffff81810219909316918316021790915560038a0180546401000000008104831693509091600891611e03918591600160401b9004166140de565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b888a6001600160a01b03167fe85390cae77efd3c4d367f60c9639faa9cd0adb604b728c40885d92446ed47628484888d604051611e6294939291906140fd565b60405180910390a35b5050505050505050610fed6001609755565b600081815261013160205260409020546001600160a01b03166109eb5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161087e565b60008181526101336020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f1382610b8f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611f5883610b8f565b9050806001600160a01b0316846001600160a01b03161480611fa057506001600160a01b038082166000908152610134602090815260408083209388168352929052205460ff165b8061092d5750836001600160a01b0316611fb9846107e2565b6001600160a01b031614949350505050565b826001600160a01b0316611fde82610b8f565b6001600160a01b0316146120045760405162461bcd60e51b815260040161087e90614129565b6001600160a01b0382166120665760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161087e565b6120738383836001613056565b826001600160a01b031661208682610b8f565b6001600160a01b0316146120ac5760405162461bcd60e51b815260040161087e90614129565b60008181526101336020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610132855283862080546000190190559087168086528386208054600101905586865261013190945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6033546001600160a01b03163314610a895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161087e565b6121a16130d5565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60655460ff1615610a895760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161087e565b806001600160a01b0316826001600160a01b031614610fed5760405162461bcd60e51b8152602060048201526005602482015264303030333360d81b604482015260640161087e565b60016101968260405161228d9190613e0d565b908152602001604051809103902060006101000a81548160ff021916908315150217905550816060015182608001516001600160a01b03167f4119eb3bab0f79402ed3d728b355f9b48ceaf357df7b2b8c992eeeb90596f11884846040516122f692919061416e565b60405180910390a35050565b6002609754036123545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161087e565b6002609755565b6040516331a9108f60e11b8152600481018390526001600160a01b038083169190851690636352211e90602401602060405180830381865afa1580156123a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c99190613e8f565b6001600160a01b03161461091f5760405162461bcd60e51b8152602060048201526005602482015264303030323160d81b604482015260640161087e565b61019454600160a01b900460ff166109eb5760405163df592f7d60e01b81526001600160a01b03821660048201527340c57923924b5c5c5455c48d93317139addac8fb90600090829063df592f7d90602401602060405180830381865afa158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a9190614083565b9050801561091f5760405162461bcd60e51b8152602060048201526005602482015264303030313760d81b604482015260640161087e565b6124db4261311e565b63ffffffff1681610100015163ffffffff16116109eb5760405162461bcd60e51b8152602060048201526005602482015264030303031360dc1b604482015260640161087e565b6001600160a01b03919091166000908152610195602090815260408083209383529290522090565b8047101561259a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161087e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146125e7576040519150601f19603f3d011682016040523d82523d6000602084013e6125ec565b606091505b505090508061091f5760405162461bcd60e51b815260040161087e9061423e565b61019454604051630f84100560e21b81526001600160a01b03868116600483015260248201869052604482018490526000928392839290911690633e10401490606401600060405180830381865afa15801561266d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612695919081019061432a565b9150915060005b825181101561273e5760008282815181106126b9576126b96143e5565b6020026020010151111561272c576127048382815181106126dc576126dc6143e5565b6020026020010151878484815181106126f7576126f76143e5565b6020026020010151612f38565b818181518110612716576127166143e5565b6020026020010151846127299190613f13565b93505b8061273681613f6a565b91505061269c565b505050949350505050565b610fed828260405180602001604052806000815250613187565b600185018390558185556002850180546001600160801b0319166001600160801b03831617905560e0840151612797612aaf565b6127a191906140de565b8560030160086101000a81548163ffffffff021916908363ffffffff1602179055506127cb612aaf565b6003860180546040870151600290980180546001600160801b03998a16600160801b0299169890981790975560c086015160e09096015163ffffffff9081166401000000000267ffffffffffffffff19938216600160601b02939093166fffffffff00000000ffffffffffffffff1990981697909717959096169490941793909317909355505050565b604051632142170760e11b81526001600160a01b0383811660048301528281166024830152604482018590528516906342842e0e90606401600060405180830381600087803b1580156128a757600080fd5b505af11580156128bb573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0380841660008181526101976020908152604080832094871680845285835281842080549585526101988452828520828652845282852086865284528285208890558185526101998452828520888652845291842085905583529390528254919260019290919061293e908490613f13565b909155505050505050565b6001609755565b6129586121eb565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121ce3390565b805461299890610b8f565b6001600160a01b0316336001600160a01b0316146109eb5760405162461bcd60e51b8152602060048201526005602482015264303030323160d81b604482015260640161087e565b816001600160a01b0316836001600160a01b031603612a415760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161087e565b6001600160a01b0383811660008181526101346020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000612aba4261311e565b905090565b60006001612acd8585611953565b612ad79190613f53565b6001600160a01b038416600090815261019960209081526040808320868452909152902054909150808214612b57576001600160a01b038581166000908152610198602090815260408083209388168084529382528083208684528252808320548584528184208190559383526101998252808320938352929052208190555b6001600160a01b0380851660008181526101996020908152604080832088845282528083208390559389168083526101988252848320848452825284832087845282528483208390558252610197815283822092825291909152908120805460019290612bc5908490613f53565b90915550505050505050565b6000612bdc82610b8f565b9050612bec816000846001613056565b612bf582610b8f565b60008381526101336020908152604080832080546001600160a01b03199081169091556001600160a01b03851680855261013284528285208054600019019055878552610131909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b612c82848484611fcb565b612c8e848484846131ba565b61155b5760405162461bcd60e51b815260040161087e906143fb565b600054610100900460ff16612cd15760405162461bcd60e51b815260040161087e9061444d565b610fed82826132b8565b600054610100900460ff16612d025760405162461bcd60e51b815260040161087e9061444d565b610a896132f9565b600054610100900460ff16612d315760405162461bcd60e51b815260040161087e9061444d565b610a89613329565b600054610100900460ff16612d605760405162461bcd60e51b815260040161087e9061444d565b610a8961335c565b600054610100900460ff16610a895760405162461bcd60e51b815260040161087e9061444d565b600054610100900460ff16612db65760405162461bcd60e51b815260040161087e9061444d565b610fed8282613383565b60606000612dcd836133d3565b600101905060008167ffffffffffffffff811115612ded57612ded61385b565b6040519080825280601f01601f191660200182016040528015612e17576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612e2157509392505050565b6000610749612e606134ab565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028101546001600160801b03166000036109eb5760405162461bcd60e51b8152602060048201526005602482015264303030303760d81b604482015260640161087e565b80471015612f885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161087e565b6000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114612fd5576040519150601f19603f3d011682016040523d82523d6000602084013e612fda565b606091505b505090508061155b576000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114613030576040519150601f19603f3d011682016040523d82523d6000602084013e613035565b606091505b505090508061127d5760405162461bcd60e51b815260040161087e9061423e565b600181111561155b576001600160a01b0384161561309d576001600160a01b0384166000908152610132602052604081208054839290613097908490613f53565b90915550505b6001600160a01b0383161561155b576001600160a01b038316600090815261013260205260408120805483929061293e908490613f13565b60655460ff16610a895760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161087e565b600063ffffffff8211156131835760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161087e565b5090565b6131918383613526565b61319e60008484846131ba565b61091f5760405162461bcd60e51b815260040161087e906143fb565b60006001600160a01b0384163b156132b057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906131fe903390899088908890600401614498565b6020604051808303816000875af1925050508015613239575060408051601f3d908101601f19168201909252613236918101906144d5565b60015b613296573d808015613267576040519150601f19603f3d011682016040523d82523d6000602084013e61326c565b606091505b50805160000361328e5760405162461bcd60e51b815260040161087e906143fb565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061092d565b50600161092d565b600054610100900460ff166132df5760405162461bcd60e51b815260040161087e9061444d565b81516020928301208151919092012060c99190915560ca55565b600054610100900460ff166133205760405162461bcd60e51b815260040161087e9061444d565b610a8933612ea1565b600054610100900460ff166133505760405162461bcd60e51b815260040161087e9061444d565b6065805460ff19169055565b600054610100900460ff166129495760405162461bcd60e51b815260040161087e9061444d565b600054610100900460ff166133aa5760405162461bcd60e51b815260040161087e9061444d565b81516133be9061012f9060208501906136c3565b50805161091f906101309060208401906136c3565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134125772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061343e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061345c57662386f26fc10000830492506010015b6305f5e1008310613474576305f5e100830492506008015b612710831061348857612710830492506004015b6064831061349a576064830492506002015b600a83106107495760010192915050565b6000612aba7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6134da60c95490565b60ca546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6001600160a01b03821661357c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161087e565b600081815261013160205260409020546001600160a01b0316156135e25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161087e565b6135f0600083836001613056565b600081815261013160205260409020546001600160a01b0316156136565760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161087e565b6001600160a01b0382166000818152610132602090815260408083208054600101905584835261013190915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546136cf90613dd3565b90600052602060002090601f0160209004810192826136f15760008555613737565b82601f1061370a57805160ff1916838001178555613737565b82800160010185558215613737579182015b8281111561373757825182559160200191906001019061371c565b506131839291505b80821115613183576000815560010161373f565b6001600160e01b0319811681146109eb57600080fd5b60006020828403121561377b57600080fd5b8135610a7281613753565b60005b838110156137a1578181015183820152602001613789565b8381111561155b5750506000910152565b600081518084526137ca816020860160208601613786565b601f01601f19169290920160200192915050565b602081526000610a7260208301846137b2565b60006020828403121561380357600080fd5b5035919050565b6001600160a01b03811681146109eb57600080fd5b803561382a8161380a565b919050565b6000806040838503121561384257600080fd5b823561384d8161380a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156138955761389561385b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156138c4576138c461385b565b604052919050565b600082601f8301126138dd57600080fd5b813567ffffffffffffffff8111156138f7576138f761385b565b61390a601f8201601f191660200161389b565b81815284602083860101111561391f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561395257600080fd5b843561395d8161380a565b9350602085013561396d8161380a565b925060408501359150606085013567ffffffffffffffff81111561399057600080fd5b61399c878288016138cc565b91505092959194509250565b6000602082840312156139ba57600080fd5b813567ffffffffffffffff8111156139d157600080fd5b61092d848285016138cc565b6000806000606084860312156139f257600080fd5b83356139fd8161380a565b92506020840135613a0d8161380a565b929592945050506040919091013590565b80356001600160801b038116811461382a57600080fd5b803563ffffffff8116811461382a57600080fd5b60006101208284031215613a5c57600080fd5b613a64613871565b9050613a6f82613a1e565b8152613a7d60208301613a1e565b6020820152613a8e60408301613a1e565b604082015260608201356060820152613aa96080830161381f565b6080820152613aba60a0830161381f565b60a0820152613acb60c08301613a35565b60c0820152613adc60e08301613a35565b60e0820152610100613aef818401613a35565b9082015292915050565b6000806101408385031215613b0d57600080fd5b613b178484613a49565b915061012083013567ffffffffffffffff811115613b3457600080fd5b613b40858286016138cc565b9150509250929050565b6000610100808385031215613b5e57600080fd5b6040519081019067ffffffffffffffff82118183101715613b8157613b8161385b565b816040528335815260208401356020820152613b9f60408501613a1e565b6040820152613bb060608501613a1e565b6060820152613bc160808501613a35565b6080820152613bd260a08501613a35565b60a0820152613be360c08501613a35565b60c0820152613bf460e08501613a35565b60e0820152949350505050565b600060208284031215613c1357600080fd5b8135610a728161380a565b600080600080600060808688031215613c3657600080fd5b8535613c418161380a565b94506020860135613c518161380a565b935060408601359250606086013567ffffffffffffffff80821115613c7557600080fd5b818801915088601f830112613c8957600080fd5b813581811115613c9857600080fd5b896020828501011115613caa57600080fd5b9699959850939650602001949392505050565b600061010082019050825182526020830151602083015260408301516001600160801b0380821660408501528060608601511660608501525050608083015163ffffffff80821660808501528060a08601511660a08501528060c08601511660c0850152505060e0830151613d3a60e084018263ffffffff169052565b5092915050565b80151581146109eb57600080fd5b60008060408385031215613d6257600080fd5b8235613d6d8161380a565b91506020830135613d7d81613d41565b809150509250929050565b60006101208284031215613d9b57600080fd5b610a728383613a49565b60008060408385031215613db857600080fd5b8235613dc38161380a565b91506020830135613d7d8161380a565b600181811c90821680613de757607f821691505b602082108103613e0757634e487b7160e01b600052602260045260246000fd5b50919050565b60008251613e1f818460208701613786565b9190910192915050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b82815260406020820152600061092d60408301846137b2565b600060208284031215613ea157600080fd5b8151610a728161380a565b634e487b7160e01b600052601160045260246000fd5b60006001600160801b0380831681851681830481118215151615613ee857613ee8613eac565b02949350505050565b600082613f0e57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613f2657613f26613eac565b500190565b60006001600160801b0383811690831681811015613f4b57613f4b613eac565b039392505050565b600082821015613f6557613f65613eac565b500390565b600060018201613f7c57613f7c613eac565b5060010190565b805482526001810154602083015260028101546001600160801b03811660408401528060801c606084015250600381015463ffffffff8082166080850152808260201c1660a0850152613fe360c08501828460401c1663ffffffff169052565b61155b60e08501828460601c1663ffffffff169052565b6001600160a01b03841681526101406020820181905260009061401f838201866137b2565b91505061092d6040830184613f83565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561409557600080fd5b8151610a7281613d41565b61010081016107498284613f83565b600083516140c1818460208801613786565b8351908301906140d5818360208801613786565b01949350505050565b600063ffffffff8083168185168083038211156140d5576140d5613eac565b848152602081018490526040810183905261016081016141206060830184613f83565b95945050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60006101406001600160801b038086511684528060208701511660208501525060408501516141a860408501826001600160801b03169052565b506060850151606084015260808501516141cd60808501826001600160a01b03169052565b5060a08501516141e860a08501826001600160a01b03169052565b5060c085015161420060c085018263ffffffff169052565b5060e085015161421860e085018263ffffffff169052565b506101008581015163ffffffff16908401526101208301819052614120818401856137b2565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b600067ffffffffffffffff8211156142b5576142b561385b565b5060051b60200190565b600082601f8301126142d057600080fd5b815160206142e56142e08361429b565b61389b565b82815260059290921b8401810191818101908684111561430457600080fd5b8286015b8481101561431f5780518352918301918301614308565b509695505050505050565b6000806040838503121561433d57600080fd5b825167ffffffffffffffff8082111561435557600080fd5b818501915085601f83011261436957600080fd5b815160206143796142e08361429b565b82815260059290921b8401810191818101908984111561439857600080fd5b948201945b838610156143bf5785516143b08161380a565b8252948201949082019061439d565b918801519196509093505050808211156143d857600080fd5b50613b40858286016142bf565b634e487b7160e01b600052603260045260246000fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906144cb908301846137b2565b9695505050505050565b6000602082840312156144e757600080fd5b8151610a728161375356fe4e69667479417065732053656c6c65722046696e616e63696e67205469636b657473a2646970667358221220a2886aac4a7b1bb8c4a562aa18c84baa331f23cf77fedb94d8fe31293cf8456564736f6c634300080d0033