0x60a06040523060601b6080523480156200001857600080fd5b50600054610100900460ff16158080156200003a5750600054600160ff909116105b806200006a575062000057306200014460201b620026e91760201c565b1580156200006a575060005460ff166001145b620000d25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000f6576000805461ff0019166101001790555b80156200013d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000153565b6001600160a01b03163b151590565b60805160601c6155136200018e60003960008181610c4901528181610cdf015281816114b90152818161154f015261167e01526155136000f3fe6080604052600436106102dc5760003560e01c806387c5bd1b11610184578063b6ed701e116100d6578063d82d58a51161008a578063e3795cc111610064578063e3795cc114610994578063ef9e5e28146109ab578063f2fde38b146109be57600080fd5b8063d82d58a514610926578063e17efd481461095f578063e18910a31461097f57600080fd5b8063caaf43f1116100bb578063caaf43f1146108c4578063cb718a9b146108f1578063d47eed451461090657600080fd5b8063b6ed701e14610891578063b9256d28146108b157600080fd5b806396834ad311610138578063a4ae35e011610112578063a4ae35e014610818578063b5dcc91114610838578063b5ec02611461085857600080fd5b806396834ad3146107ae5780639a8a0592146107ce578063a38d81c6146107f657600080fd5b806389a5bb4d1161016957806389a5bb4d146107435780638da5cb5b146107635780639474f45b1461078e57600080fd5b806387c5bd1b146106d15780638881016f146106fe57600080fd5b80634f1ef2861161023d5780636b7f53ca116101f1578063715018a6116101cb578063715018a61461063b5780637b72bcae1461065057806384acd1bb1461068557600080fd5b80636b7f53ca146105c25780636c72f51b146105ef578063711a2e281461061b57600080fd5b806354fd4d501161022257806354fd4d5014610537578063586d3cf81461058357806358c67635146105a257600080fd5b80634f1ef2861461050f57806352d1902d1461052257600080fd5b8063437209a71161029457806348b6404d1161027957806348b6404d146104805780634c469d8c1461049f5780634d7a734e146104ef57600080fd5b8063437209a7146103ca5780634716e9c51461046057600080fd5b806331d98b3f116102c557806331d98b3f146103375780633659cfe614610364578063426234e41461038457600080fd5b8063146faf77146102e157806314dd317f14610303575b600080fd5b3480156102ed57600080fd5b506103016102fc3660046148c1565b6109de565b005b34801561030f57600080fd5b5061032361031e366004614bf4565b610b87565b604051905181526020015b60405180910390f35b34801561034357600080fd5b50610357610352366004614b36565b610bfb565b60405161032e91906150f7565b34801561037057600080fd5b5061030161037f3660046148a7565b610c31565b34801561039057600080fd5b506040805180820182526000808252602091820152815180830190925260d05461ffff16825260d1549082015260405161032e919061506c565b3480156103d657600080fd5b506104506103e5366004614e08565b6040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b604051901515815260200161032e565b61047361046e366004614aa4565b610e20565b60405161032e9190614fc0565b34801561048c57600080fd5b5060ce545b60405190815260200161032e565b3480156104ab57600080fd5b506104d66104ba366004614b36565b600090815260d5602052604090205467ffffffffffffffff1690565b60405167ffffffffffffffff909116815260200161032e565b3480156104fb57600080fd5b5061032361050a366004614bf4565b6113ee565b61030161051d366004614982565b6114a1565b34801561052e57600080fd5b50610491611664565b34801561054357600080fd5b50604080518082018252600581527f312e322e300000000000000000000000000000000000000000000000000000006020820152905161032e919061503e565b34801561058f57600080fd5b5060d25467ffffffffffffffff166104d6565b3480156105ae57600080fd5b506104506105bd366004614e08565b611736565b3480156105ce57600080fd5b506105e26105dd366004614bf4565b611759565b60405161032e9190615087565b3480156105fb57600080fd5b5060d45463ffffffff165b60405163ffffffff909116815260200161032e565b34801561062757600080fd5b50610357610636366004614b66565b61198f565b34801561064757600080fd5b50610301611a05565b34801561065c57600080fd5b5061067061066b366004614bf4565b611a19565b604051905163ffffffff16815260200161032e565b34801561069157600080fd5b5060c95473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032e565b3480156106dd57600080fd5b506106f16106ec366004614bf4565b611a47565b60405161032e9190615132565b34801561070a57600080fd5b5061071e610719366004614bf4565b611bdd565b604051905173ffffffffffffffffffffffffffffffffffffffff16815260200161032e565b34801561074f57600080fd5b5061049161075e366004614c27565b611c1b565b34801561076f57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166106ac565b34801561079a57600080fd5b506103576107a9366004614b36565b611c85565b3480156107ba57600080fd5b506103576107c9366004614b36565b611d31565b3480156107da57600080fd5b506107e3611dfd565b60405161ffff909116815260200161032e565b34801561080257600080fd5b5061080b611ea0565b60405161032e9190614f88565b34801561082457600080fd5b50610357610833366004614b66565b611f13565b34801561084457600080fd5b50610357610853366004614b36565b611f40565b34801561086457600080fd5b50610450610873366004614b36565b600090815260d5602052604090205467ffffffffffffffff16151590565b34801561089d57600080fd5b506103016108ac366004614b87565b611f70565b6103016108bf366004614a0e565b612250565b3480156108d057600080fd5b506108e46108df366004614b36565b61237c565b60405161032e91906150e8565b3480156108fd57600080fd5b5060cf54610491565b34801561091257600080fd5b506104916109213660046149ce565b612583565b34801561093257600080fd5b50610952610941366004614bf4565b604080516020810190915290815290565b60405161032e9190615051565b34801561096b57600080fd5b5061049161097a366004614b36565b612599565b34801561098b57600080fd5b506104916125af565b3480156109a057600080fd5b506397a6f304610606565b6103016109b93660046149ce565b6125ba565b3480156109ca57600080fd5b506103016109d93660046148a7565b61264f565b600054610100900460ff16158080156109fe5750600054600160ff909116105b80610a185750303b158015610a18575060005460ff166001145b610a8f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610aed57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610af5612705565b610afd61278a565b610b0f8b8b8b8b8b8b8b8b8b8b612807565b610b17611a05565b8015610b7a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6040805160208101909152600081526000610ba28382612b34565b67ffffffffffffffff168252610bb9600882615256565b905080835114610bf5576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516080810182526000808252602082018190529181018290526060810191909152610c2b826108336125af565b92915050565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610cdd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610a86565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610a86565b610de481612b9a565b610e1d8160005b6040519080825280601f01601f191660200182016040528015610e15576020820181803683370190505b506000612ba2565b50565b60606000610e2e8888612583565b905080341015610e6a576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508367ffffffffffffffff811115610e9257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f2257816020015b610f0f604080516060808201835260008083528351608081018552818152602081810183905294810182905291820152909182019081526040805160808101825260008082526020828101829052928201819052606082015291015290565b815260200190600190039081610eb05790505b50905060005b8681101561136d5760606000610f6e8a8a85818110610f5757634e487b7160e01b600052603260045260246000fd5b9050602002810190610f69919061514d565b612d63565b60e001519150600090508080610f8384612ee7565b92509250925060005b8281101561135c576040848601015160209060005b8c811015610fe457818e8e83818110610fca57634e487b7160e01b600052603260045260246000fd5b905060200201351415610fdc57610fe4565b600101610fa1565b808d148061101c575089818151811061100d57634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b1561102d5750505092810192611354565b600061103a89898861307a565b509050828b838151811061105e57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001818152505080604001518b838151811061109357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516000019060070b908160070b8152505080606001518b83815181106110d457634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516020019067ffffffffffffffff16908167ffffffffffffffff168152505080602001518b838151811061112357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040019060030b908160030b81525050806000015167ffffffffffffffff168b838151811061116e57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151606001818152505080608001518b83815181106111a757634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516000019060070b908160070b815250508060a001518b83815181106111e857634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516020019067ffffffffffffffff16908167ffffffffffffffff168152505080602001518b838151811061123757634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516040019060030b908160030b81525050806000015167ffffffffffffffff168b838151811061128257634e487b7160e01b600052603260045260246000fd5b60200260200101516040015160600181815250508c67ffffffffffffffff168b83815181106112c157634e487b7160e01b600052603260045260246000fd5b60200260200101516020015160600151108061131557508b67ffffffffffffffff168b838151811061130357634e487b7160e01b600052603260045260246000fd5b60200260200101516020015160600151115b1561134b576000801b8b838151811061133e57634e487b7160e01b600052603260045260246000fd5b6020908102919091010151525b50505093820193505b600101610f8c565b505060019093019250610f28915050565b5060005b848110156113e35781818151811061139957634e487b7160e01b600052603260045260246000fd5b6020908102919091010151516113db576040517f45805f5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611371565b509695505050505050565b60408051602081019091526000815260008061140a8482612b34565b9050611417600883615256565b915060006114258584612b34565b9050611432600884615256565b925061144967ffffffffffffffff8216600a6152cf565b61145d9067ffffffffffffffff8416615395565b845284518314611499576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050919050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561154d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610a86565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115c27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461164b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610a86565b61165482612b9a565b61166082826001612ba2565b5050565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146117115760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a86565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60d05460009061ffff8481169116148015611752575060d15482145b9392505050565b611785604080516080810190915280600081526020016000815260006020820152606060409091015290565b60008061179284826131a3565b905063ffffffff8116635054474d146117d7576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117e2600483615256565b915060006117f08584613209565b90508060ff16600181111561181557634e487b7160e01b600052602160045260246000fd5b8490600181111561183657634e487b7160e01b600052602160045260246000fd5b9081600181111561185757634e487b7160e01b600052602160045260246000fd5b905250611865600184615256565b925060018451600181111561188a57634e487b7160e01b600052602160045260246000fd5b146118c1576040517f63daeb7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006118cd8685613209565b90508060ff1660058111156118f257634e487b7160e01b600052602160045260246000fd5b8560200190600581111561191657634e487b7160e01b600052602160045260246000fd5b9081600581111561193757634e487b7160e01b600052602160045260246000fd5b905250611945600185615256565b9350611951868561326f565b61ffff166040860152611965600285615256565b93506119808485885161197891906153d2565b8891906132d5565b60608601525092949350505050565b6040805160808101825260008082526020820181905291810182905260608101919091526119bc83611c85565b9050816119cd4283606001516133fd565b1115610c2b576040517f19abf40e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a0d613422565b611a176000613489565b565b6040805160208101909152600081526000611a3483826131a3565b63ffffffff168252610bb9600482615256565b604080516020810190915260608152600080611a638482613209565b9050611a70600183615256565b91508060ff1667ffffffffffffffff811115611a9c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611ae157816020015b6040805180820190915260008082526020820152815260200190600190039081611aba5790505b50835260005b8160ff16811015611b9b57611afc858461326f565b8451805183908110611b1e57634e487b7160e01b600052603260045260246000fd5b602090810291909101015161ffff9091169052611b3c600284615256565b9250611b488584613500565b8451805183908110611b6a57634e487b7160e01b600052603260045260246000fd5b60200260200101516020018181525050602083611b879190615256565b925080611b9381615415565b915050611ae7565b5081845114611bd6576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050919050565b6040805160208101909152600081526000611bf88382613566565b73ffffffffffffffffffffffffffffffffffffffff168252610bb9601482615256565b600081600001518260200151604051602001611c6892919060f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b604051602081830303815290604052805190602001209050919050565b60408051608081018252600080825260208083018281528385018381526060850184815287855260d590935294909220805467ffffffffffffffff808216938490526801000000000000000091829004600390810b810b900b9096526001820154600781810b810b900b865204909416909152909190610bf5576040517f14aebe6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600080825260208083018281528385018381526060850184815287855260d590935294909220805467ffffffffffffffff80821693849052680100000000000000008204600390810b810b900b9096526c010000000000000000000000008104600790810b810b900b8552740100000000000000000000000000000000000000009004909416909152909190610bf5576040517f14aebe6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611e1e60c95473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6357600080fd5b505afa158015611e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9b9190614dec565b905090565b606060c9600301805480602002602001604051908101604052809291908181526020016000905b82821015611f0a5760008481526020908190206040805180820190915260028502909101805461ffff168252600190810154828401529083529092019101611ec7565b50505050905090565b6040805160808101825260008082526020820181905291810182905260608101919091526119bc83611d31565b604080516080810182526000808252602082018190529181018290526060810191909152610c2b826106366125af565b6000611fb183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135dc92505050565b90506000611fc28260e00151611759565b9050611fcc611dfd565b61ffff16816040015161ffff1614158015611fee5750604081015161ffff1615155b15612025576040517f63daeb7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160200151600581111561204b57634e487b7160e01b600052602160045260246000fd5b14156120aa57604081015161ffff16612090576040517f63daeb7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120a56120a08260600151611bdd565b613807565b61224a565b6001816020015160058111156120d057634e487b7160e01b600052602160045260246000fd5b14156120f7576120a56120f28260600151604080516020810190915290815290565b613810565b60028160200151600581111561211d57634e487b7160e01b600052602160045260246000fd5b1415612138576120a56121338260600151611a47565b613bdb565b60038160200151600581111561215e57634e487b7160e01b600052602160045260246000fd5b1415612179576120a561217482606001516113ee565b613ddd565b60048160200151600581111561219f57634e487b7160e01b600052602160045260246000fd5b14156121ba576120a56121b58260600151610b87565b613e2f565b6005816020015160058111156121e057634e487b7160e01b600052602160045260246000fd5b1415612218576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b828114612289576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83811015612341578282828181106122b457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906122c99190614e4d565b67ffffffffffffffff166123198686848181106122f657634e487b7160e01b600052603260045260246000fd5b90506020020135600090815260d5602052604090205467ffffffffffffffff1690565b67ffffffffffffffff1610156123395761233387876125ba565b50612374565b60010161228c565b506040517fde2c57fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6123db604080516060808201835260008083528351608081018552818152602081810183905294810182905291820152909182019081526040805160808101825260008082526020828101829052928201819052606082015291015290565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a095860184905288845260d5835286842087519586018852805467ffffffffffffffff808216885268010000000000000000808304600390810b810b900b968901969096526c010000000000000000000000008204600790810b810b810b9a89019a909a52740100000000000000000000000000000000000000009091048116938701939093526001015480880b880b90970b90850152940490931691810191909152805190915067ffffffffffffffff166124f2576040517f14aebe6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b91815260408083015160208084018051600793840b840b9052606080870151825167ffffffffffffffff9182169085015283880180518451600391820b820b9089015289519451948316948401949094526080890151878901805191880b90970b905260a089015186519083169501949094529251845190830b90920b919094015293519051931692019190915290565b60008161258f60ce5490565b6117529190615395565b6000816125a560ce5490565b610c2b9190615395565b6000611e9b60cf5490565b60006125c68383612583565b905080341015612602576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8281101561224a5761264784848381811061263057634e487b7160e01b600052603260045260246000fd5b9050602002810190612642919061514d565b613e6c565b600101612605565b612657613422565b73ffffffffffffffffffffffffffffffffffffffff81166126e05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a86565b610e1d81613489565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff166127825760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a86565b611a17613e7e565b600054610100900460ff16611a175760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a86565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c16179055878614612880576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b88811015612a9757600060405180604001604052808c8c858181106128b857634e487b7160e01b600052603260045260246000fd5b90506020020160208101906128cd9190614dd0565b61ffff1681526020018a8a858181106128f657634e487b7160e01b600052603260045260246000fd5b602090810292909201359092528251838201516040805160f09390931b7fffff00000000000000000000000000000000000000000000000000000000000016838501526022808401929092528051808403909201825260429092018252805190830120600090815260cd9092529020549192505060ff16156129a4576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160cd60006129b384611c1b565b8152602080820192909252604001600090812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169315159390931790925560cc8054600181018255925282517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe600290930292830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905591909101517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebf9091015580612a8f81615415565b915050612883565b506040805180820190915261ffff86168082526020820186905260d080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016909117905560d185905560d280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff861617905550612b1f8260cf55565b612b288160ce55565b50505050505050505050565b6000612b41826008615256565b83511015612b915760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401610a86565b50016008015190565b610e1d613422565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612bda57612bd583613f04565b505050565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c2057600080fd5b505afa925050508015612c50575060408051601f3d908101601f19168201909252612c4d91810190614b4e565b60015b612cc25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610a86565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612d575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610a86565b50612bd5838383613ff4565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018390526101208201526101408101919091526000612ddc60c95473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde85856040518363ffffffff1660e01b8152600401612e1692919061500f565b60006040518083038186803b158015612e2e57600080fd5b505afa158015612e42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e6a9190810190614c7e565b50909250905080612ea7576040517f2acbe91500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612eb181614019565b610c2b576040517fe60dce7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808080612efa858260049101015190565b90506004840193508063ffffffff16635032574814612f45576040517fe69ffece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002858501810151940193600361ffff821614612f8e576040517fe69ffece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002850194506000612fa4878760029101015190565b90506002860195506000612fbc888860019101015190565b90508161ffff16870196508060ff16600214613004576040517fe69ffece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050508284016002015161ffff169150600283019250613029848460029101015190565b61ffff1690506002830192508181028301845114613073576040517fe69ffece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9193909250565b6040805160c081018252600080825260208201818152828401828152606084018381526080850184815260a08601948552888a01968701516048880151600790810b810b909452605088015167ffffffffffffffff9081169093526054880151600390810b900b909452605c870151830b90920b909152606485015181169092526065840151607d94850151909216835291929060ff8116600114156131255760188201915061315f565b8582018701600881015167ffffffffffffffff90811686526010820151600790810b900b6040870152601891820151166060860152909101905b508381111561319a576040517fe69ffece00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50935093915050565b60006131b0826004615256565b835110156132005760405162461bcd60e51b815260206004820152601460248201527f746f55696e7433325f6f75744f66426f756e64730000000000000000000000006044820152606401610a86565b50016004015190565b6000613216826001615256565b835110156132665760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610a86565b50016001015190565b600061327c826002615256565b835110156132cc5760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610a86565b50016002015190565b6060816132e381601f615256565b10156133315760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610a86565b61333b8284615256565b8451101561338b5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610a86565b6060821580156133aa57604051915060008252602082016040526133f4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156133e35780518352602092830192016133cb565b5050858452601f01601f1916604052505b50949350505050565b6000818311156134185761341182846153d2565b9050610c2b565b61341183836153d2565b60335473ffffffffffffffffffffffffffffffffffffffff163314611a175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a86565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061350d826020615256565b8351101561355d5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610a86565b50016020015190565b6000613573826014615256565b835110156135c35760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e647300000000000000000000006044820152606401610a86565b5001602001516c01000000000000000000000000900490565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201819052610100820183905261012082015261014081019190915260008061365660c95473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde856040518263ffffffff1660e01b815260040161368e919061503e565b60006040518083038186803b1580156136a657600080fd5b505afa1580156136ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136e29190810190614c7e565b50915091508061371e576040517f2acbe91500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61373082606001518360800151611736565b613766576040517f360f2d8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d25467ffffffffffffffff1667ffffffffffffffff168260a0015167ffffffffffffffff16116137c3576040517f88d1b84700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a082015160d280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911790555092915050565b610e1d81614093565b60006138446040805180820182526000808252602091820152815180830190925260d05461ffff16825260d1549082015290565b905060008061386860c95473ffffffffffffffffffffffffffffffffffffffff1690565b84516040517fc0fd8bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163c0fd8bde916138bc9160040161503e565b60006040518083038186803b1580156138d457600080fd5b505afa1580156138e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139109190810190614c7e565b50915091508061394c576040517f2acbe91500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061395b8360e00151611759565b9050613965611dfd565b61ffff16816040015161ffff16141580156139875750604081015161ffff1615155b156139be576040517f63daeb7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816020015160058111156139e457634e487b7160e01b600052602160045260246000fd5b14613a1b576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613a2a8260600151611a19565b805190915063ffffffff16613a4460d45463ffffffff1690565b63ffffffff1610613a81576040517f88d1b84700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160d480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055604080518082018252606086015161ffff168082526080870151602080840182905260d080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168417905560d182905560a089015160d280547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff90921691909117905584518086018652600080825290820152845180860190955291845290830152907f6bce23ef3d34e51710fe4700b43ba5f1733a6215c883f384671a4ece3ea8aa2090879060d25460408051845161ffff908116825260209586015186830152845116918101919091529290910151606083015267ffffffffffffffff16608082015260a00160405180910390a150505050505050565b6000613be5611ea0565b905060005b8151811015613c7b57600060c96004016000613c2c858581518110613c1f57634e487b7160e01b600052603260045260246000fd5b6020026020010151611c1b565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055613c74600182615256565b9050613bea565b50613c8860cc6000614626565b60005b825151811015613d98578251805160cc919083908110613cbb57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518254600180820185556000948552838520835160029093020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90931692909217825591909201519181019190915584518051919260cd929091613d499186908110613c1f57634e487b7160e01b600052603260045260246000fd5b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580613d9081615415565b915050613c8b565b507fd451e0fcb7c5b9e13de533604d158069dad159841c45f39f09d379bfc423080d81613dc3611ea0565b604051613dd1929190614f9b565b60405180910390a15050565b6000613de860ce5490565b825160ce5590507f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e3781613e1a60ce5490565b60408051928352602083019190915201613dd1565b6000613e3a60cf5490565b825160cf5590507fcdb88a22f82ddd76115ab7c66cf08eb1e40afe80c9b31017eb2cbdb1570b33ae81613e1a60cf5490565b611660613e798383612d63565b614230565b600054610100900460ff16613efb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a86565b611a1733613489565b73ffffffffffffffffffffffffffffffffffffffff81163b613f8e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610a86565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b613ffd83614476565b60008251118061400a5750805b15612bd55761224a83836144c3565b6000610c2b826060015183608001516040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b60006140d37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b82519091506140e3906000610deb565b3073ffffffffffffffffffffffffffffffffffffffff1663e3795cc16040518163ffffffff1660e01b815260040160206040518083038186803b15801561412957600080fd5b505afa15801561413d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141619190614e33565b63ffffffff166397a6f304146141a3576040517f97363b3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a49816142037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015201613dd1565b60e08101516000808061424284612ee7565b92509250925060005b8281101561441c5760008061426187878661307a565b600081815260d5602052604090205482519887019892945090925067ffffffffffffffff908116911681101561441157600082815260d560209081526040918290208551815487840151888601516060808b015167ffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090951685176801000000000000000063ffffffff60039690960b959095168502177fffffffff00000000000000000000000000000000ffffffffffffffffffffffff166c01000000000000000000000000600794850b808916919091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16919091177401000000000000000000000000000000000000000092881692830217885560808d01516001909801805460a08f01519990950b88167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417979096169093029590951790558551918252938101919091529283019190915283917fd06a6b7f4918494b3719217d1802786c1f5112a6c1d88fe2cfec00b4584f6aec910160405180910390a25b50505060010161424b565b50606085015160a08601516040805161ffff909316835267ffffffffffffffff90911660208301527f943f0e8a16c19895fb87cbeb1a349ed86d7f31923089dd36c1a1ed5e300f267b910160405180910390a15050505050565b61447f81613f04565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606073ffffffffffffffffffffffffffffffffffffffff83163b61454f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610a86565b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516145779190614f6c565b600060405180830381855af49150503d80600081146145b2576040519150601f19603f3d011682016040523d82523d6000602084013e6145b7565b606091505b50915091506145df82826040518060600160405280602781526020016154b7602791396145e8565b95945050505050565b606083156145f7575081611752565b611752838381511561460c5781518083602001fd5b8060405162461bcd60e51b8152600401610a86919061503e565b5080546000825560020290600052602060002090810190610e1d91905b808211156146805780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016815560006001820155600201614643565b5090565b803573ffffffffffffffffffffffffffffffffffffffff811681146146a857600080fd5b919050565b60008083601f8401126146be578182fd5b50813567ffffffffffffffff8111156146d5578182fd5b6020830191508360208260051b85010111156146f057600080fd5b9250929050565b600082601f830112614707578081fd5b8151602067ffffffffffffffff8211156147235761472361547a565b614731818360051b016151fd565b80838252828201915082860187848660071b8901011115614750578586fd5b855b858110156147b357608080838b03121561476a578788fd5b6147726151b0565b835181528684015187820152604061478b818601614896565b90820152606061479c858201614896565b908201528552938501939190910190600101614752565b5090979650505050505050565b805180151581146146a857600080fd5b600082601f8301126147e0578081fd5b81356147f36147ee8261522e565b6151fd565b818152846020838601011115614807578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112614831578081fd5b815161483f6147ee8261522e565b818152846020838601011115614853578283fd5b6148648260208301602087016153e9565b949350505050565b80516146a881615490565b805163ffffffff811681146146a857600080fd5b80516146a8816154a0565b805160ff811681146146a857600080fd5b6000602082840312156148b8578081fd5b61175282614684565b6000806000806000806000806000806101008b8d0312156148e0578586fd5b6148e98b614684565b995060208b013567ffffffffffffffff80821115614905578788fd5b6149118e838f016146ad565b909b50995060408d0135915080821115614929578788fd5b506149368d828e016146ad565b90985096505060608b013561494a81615490565b945060808b0135935060a08b0135614961816154a0565b8093505060c08b0135915060e08b013590509295989b9194979a5092959850565b60008060408385031215614994578182fd5b61499d83614684565b9150602083013567ffffffffffffffff8111156149b8578182fd5b6149c4858286016147d0565b9150509250929050565b600080602083850312156149e0578182fd5b823567ffffffffffffffff8111156149f6578283fd5b614a02858286016146ad565b90969095509350505050565b60008060008060008060608789031215614a26578384fd5b863567ffffffffffffffff80821115614a3d578586fd5b614a498a838b016146ad565b90985096506020890135915080821115614a61578586fd5b614a6d8a838b016146ad565b90965094506040890135915080821115614a85578384fd5b50614a9289828a016146ad565b979a9699509497509295939492505050565b60008060008060008060808789031215614abc578384fd5b863567ffffffffffffffff80821115614ad3578586fd5b614adf8a838b016146ad565b90985096506020890135915080821115614af7578586fd5b50614b0489828a016146ad565b9095509350506040870135614b18816154a0565b91506060870135614b28816154a0565b809150509295509295509295565b600060208284031215614b47578081fd5b5035919050565b600060208284031215614b5f578081fd5b5051919050565b60008060408385031215614b78578182fd5b50508035926020909101359150565b60008060208385031215614b99578182fd5b823567ffffffffffffffff80821115614bb0578384fd5b818501915085601f830112614bc3578384fd5b813581811115614bd1578485fd5b866020828501011115614be2578485fd5b60209290920196919550909350505050565b600060208284031215614c05578081fd5b813567ffffffffffffffff811115614c1b578182fd5b614864848285016147d0565b600060408284031215614c38578081fd5b6040516040810181811067ffffffffffffffff82111715614c5b57614c5b61547a565b6040528235614c6981615490565b81526020928301359281019290925250919050565b600080600060608486031215614c92578081fd5b835167ffffffffffffffff80821115614ca9578283fd5b908501906101608288031215614cbd578283fd5b614cc56151d9565b614cce83614896565b8152614cdc60208401614877565b6020820152614ced60408401614877565b6040820152614cfe6060840161486c565b606082015260808301516080820152614d1960a0840161488b565b60a0820152614d2a60c08401614896565b60c082015260e083015182811115614d40578485fd5b614d4c89828601614821565b60e083015250610100614d60818501614877565b908201526101208381015183811115614d77578586fd5b614d838a8287016146f7565b918301919091525061014083810151908201529450614da4602087016147c0565b93506040860151915080821115614db9578283fd5b50614dc686828701614821565b9150509250925092565b600060208284031215614de1578081fd5b813561175281615490565b600060208284031215614dfd578081fd5b815161175281615490565b60008060408385031215614e1a578182fd5b8235614e2581615490565b946020939093013593505050565b600060208284031215614e44578081fd5b61175282614877565b600060208284031215614e5e578081fd5b8135611752816154a0565b6000815180845260208085019450808401835b83811015614eb057614e9d878351805161ffff168252602090810151910152565b6040969096019590820190600101614e7c565b509495945050505050565b60008151808452614ed38160208601602086016153e9565b601f01601f19169290920160200192915050565b805182526020810151614f2e6020840182805160070b825267ffffffffffffffff6020820151166020830152604081015160030b6040830152606081015160608301525050565b50604090810151805160070b60a0840152602081015167ffffffffffffffff1660c08401529081015160030b60e08301526060015161010090910152565b60008251614f7e8184602087016153e9565b9190910192915050565b6020815260006117526020830184614e69565b604081526000614fae6040830185614e69565b82810360208401526145df8185614e69565b6020808252825182820181905260009190848201906040850190845b8181101561500357614fef838551614ee7565b928401926101209290920191600101614fdc565b50909695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6020815260006117526020830184614ebb565b60208152600082516020808401526148646040840182614ebb565b815161ffff1681526020808301519082015260408101610c2b565b60208152600082516002811061509f5761509f615464565b806020840152506020830151600681106150bb576150bb615464565b8060408401525061ffff6040840151166060830152606083015160808084015261486460a0840182614ebb565b6101208101610c2b8284614ee7565b815160070b815260208083015167ffffffffffffffff169082015260408083015160030b908201526060808301519082015260808101610c2b565b60208152600082516020808401526148646040840182614e69565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615181578283fd5b83018035915067ffffffffffffffff82111561519b578283fd5b6020019150368190038213156146f057600080fd5b6040516080810167ffffffffffffffff811182821017156151d3576151d361547a565b60405290565b604051610160810167ffffffffffffffff811182821017156151d3576151d361547a565b604051601f8201601f1916810167ffffffffffffffff811182821017156152265761522661547a565b604052919050565b600067ffffffffffffffff8211156152485761524861547a565b50601f01601f191660200190565b600082198211156152695761526961544e565b500190565b600181815b808511156152c757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156152ad576152ad61544e565b808516156152ba57918102915b93841c9390800290615273565b509250929050565b600061175283836000826152e557506001610c2b565b816152f257506000610c2b565b816001811461530857600281146153125761532e565b6001915050610c2b565b60ff8411156153235761532361544e565b50506001821b610c2b565b5060208310610133831016604e8410600b8410161715615351575081810a610c2b565b61535b838361526e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561538d5761538d61544e565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153cd576153cd61544e565b500290565b6000828210156153e4576153e461544e565b500390565b60005b838110156154045781810151838201526020016153ec565b8381111561224a5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154475761544761544e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff81168114610e1d57600080fd5b67ffffffffffffffff81168114610e1d57600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e99a434fb67b989c1d4fee6b4375c05c656eded686e1fda96a7b8c4b7dda5de064736f6c63430008040033