6101206040523480156200001257600080fd5b5060405162004eff38038062004eff833981810160405260a08110156200003857600080fd5b50805160208083015160408085015160608601516080909601518251808401845260048082527f69444f4c000000000000000000000000000000000000000000000000000000008288018181528651808801909752918652968501969096528051969794969295919387938993620000b491600391906200020e565b508051620000ca9060049060208401906200020e565b50506005805460ff19166012179055506001600160a01b0381166200013b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062004edc6023913960400191505060405180910390fd5b60058054610100600160a81b0319166101006001600160a01b03938416021790558116620001b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062004edc6023913960400191505060405180910390fd5b6001600160601b0319606091821b1660805233901b60a052620001e260086001600160e01b03620001f816565b60c09290925260e0526101005250620002b39050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025157805160ff191683800117855562000281565b8280016001018555821562000281579182015b828111156200028157825182559160200191906001019062000264565b506200028f92915062000293565b5090565b620002b091905b808211156200028f57600081556001016200029a565b90565b60805160601c60a05160601c60c05160e05161010051614bc06200031c60003980610f5b5250806130ed52508061224e5280612f9052508061334f525080610da052806116185280611b3e52806120ef528061252f5280612e1b5280613f225250614bc06000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806379cc67901161010f578063b67f0935116100a2578063dbb2348311610071578063dbb23483146108dd578063dd62ed3e14610916578063dfef99f614610951578063e2fbacdd14610987576101f0565b8063b67f0935146107c1578063bc27f2ec146107ee578063c4fb3c3e1461080b578063d528d8aa146108ae576101f0565b80639ed7ac70116100de5780639ed7ac7014610705578063a457c2d714610732578063a9059cbb1461076b578063b515f740146107a4576101f0565b806379cc67901461068d5780637b7e31b1146106c657806393bb8a01146106ce57806395d89b41146106fd576101f0565b8063313ce56711610187578063616d272f11610156578063616d272f1461059e57806367fd88d0146105dd5780636881df131461063d57806370a082311461065a576101f0565b8063313ce5671461045257806339509351146104705780634e167ed9146104a957806350fef38c14610581576101f0565b8063134b0fca116101c3578063134b0fca1461036657806318160ddd1461039557806323b872dd1461039d5780632fe82fe6146103e0576101f0565b8063023924c7146101f557806306fdde031461022a578063095ea7b3146102a757806309f2c019146102f4575b600080fd5b6102286004803603602081101561020b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109a4565b005b610232610a9b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e0600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b4f565b604080519115158252519081900360200190f35b6103116004803603602081101561030a57600080fd5b5035610b6d565b6040805167ffffffffffffffff998a16815297891660208901529588168787015293871660608701529186166080860152851660a085015290931660c083015291151560e08201529051908190036101000190f35b6103836004803603602081101561037c57600080fd5b5035610cb2565b60408051918252519081900360200190f35b610383610cde565b6102e0600480360360608110156103b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610ce4565b610429600480360360608110156103f657600080fd5b50803590602081013573ffffffffffffffffffffffffffffffffffffffff16906040013567ffffffffffffffff16610d8b565b6040805193845267ffffffffffffffff9283166020850152911682820152519081900360600190f35b61045a6113a1565b6040805160ff9092168252519081900360200190f35b6102e06004803603604081101561048657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356113aa565b610564600480360360408110156104bf57600080fd5b8101906020810181356401000000008111156104da57600080fd5b8201836020820111156104ec57600080fd5b8035906020019184602083028401116401000000008311171561050e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050903573ffffffffffffffffffffffffffffffffffffffff16915061140b9050565b6040805167ffffffffffffffff9092168252519081900360200190f35b6102286004803603602081101561059757600080fd5b503561159a565b610228600480360360808110156105b457600080fd5b5080359067ffffffffffffffff6020820135811691604081013590911690606001351515611a7a565b610616600480360360408110156105f357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611c4d565b6040805167ffffffffffffffff938416815291909216602082015281519081900390910190f35b6103836004803603602081101561065357600080fd5b5035611c9d565b6103836004803603602081101561067057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ced565b610228600480360360408110156106a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d15565b610383611de3565b6102e0600480360360808110156106e457600080fd5b5080359060208101359060408101359060600135611de9565b610232611ef5565b6103836004803603604081101561071b57600080fd5b508035906020013567ffffffffffffffff16611f74565b6102e06004803603604081101561074857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611fec565b6102e06004803603604081101561078157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612067565b6102e0600480360360208110156107ba57600080fd5b503561207b565b610564600480360360408110156107d757600080fd5b508035906020013567ffffffffffffffff1661251c565b6105646004803603602081101561080457600080fd5b5035612a72565b6105646004803603602081101561082157600080fd5b81019060208101813564010000000081111561083c57600080fd5b82018360208201111561084e57600080fd5b8035906020019184602083028401116401000000008311171561087057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612a8e945050505050565b6102e0600480360360808110156108c457600080fd5b5080359060208101359060408101359060600135612a9a565b610616600480360360408110156108f357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612bc8565b6103836004803603604081101561092c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612bff565b61096e6004803603602081101561096757600080fd5b5035612c37565b6040805192835260208301919091528051918290030190f35b6102286004803603602081101561099d57600080fd5b5035612d9d565b6109ad3361334d565b6109e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806148dd602e913960400191505060405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff1615610a3d5760405162461bcd60e51b815260040180806020018281038252602a815260200180614af6602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a8f5760405162461bcd60e51b81526004018080602001828103825260238152602001806149a16023913960400191505060405180910390fd5b610a988161338c565b50565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b455780601f10610b1a57610100808354040283529160200191610b45565b820191906000526020600020905b815481529060010190602001808311610b2857829003601f168201915b5050505050905090565b6000610b63610b5c6133d3565b84846133d7565b5060015b92915050565b600080600080600080600080610b81614707565b506000898152600a60209081526040918290208251608081018452905467ffffffffffffffff80821680845268010000000000000000830482169484018590527001000000000000000000000000000000008304821695840186905278010000000000000000000000000000000000000000000000009092041660608301819052909b509199509197509550610c15614707565b50505060009788525050600b60209081526040968790208751608081018952905467ffffffffffffffff808216808452680100000000000000008304821694840185905270010000000000000000000000000000000083049091169983018a9052780100000000000000000000000000000000000000000000000090910460ff161515606090920182905296989597949693959394919391925090565b60008181526008602052604081205467ffffffffffffffff16610cd58382611f74565b9150505b919050565b60025490565b6000610cf18484846134ea565b610d8184610cfd6133d3565b610d7c856040518060600160405280602881526020016149526028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d486133d3565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61369216565b6133d7565b5060019392505050565b6000806000610d9986610cb2565b92506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b896040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d6080811015610e3957600080fd5b50805160409091015190925067ffffffffffffffff169050610e5a8861207b565b610e955760405162461bcd60e51b815260040180806020018281038252602f81526020018061484e602f913960400191505060405180910390fd5b610e9d614707565b506000858152600a602090815260408083208151608081018352905467ffffffffffffffff808216835268010000000000000000820481169483019490945270010000000000000000000000000000000081048416928201929092527801000000000000000000000000000000000000000000000000909104821660608201529190610f319089168463ffffffff61372916565b90506000610f3e82611c9d565b9050826040015167ffffffffffffffff166000141580610f7e57507f00000000000000000000000000000000000000000000000000000000000000008110155b610fb95760405162461bcd60e51b815260040180806020018281038252603a815260200180614a1d603a913960400191505060405180910390fd5b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015267ffffffffffffffff8b1660448201529051869173ffffffffffffffffffffffffffffffffffffffff8316916323b872dd916064808201926020929091908290030181600087803b15801561104057600080fd5b505af1158015611054573d6000803e3d6000fd5b505050506040513d602081101561106a57600080fd5b506000905061108083600a63ffffffff61378916565b73ffffffffffffffffffffffffffffffffffffffff8d1660009081526009602090815260408083208e845290915290208054919250906110d9906110d49067ffffffffffffffff168463ffffffff6137cb16565b613825565b81547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9182161780835561112b916110d4916801000000000000000090048116908f166137cb565b815467ffffffffffffffff9190911668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff9091161781556111858d611180868563ffffffff61387216565b6138b4565b61118f30836138b4565b6007546111a2908663ffffffff6137cb16565b60075585516111c9906110d49067ffffffffffffffff908116908f1663ffffffff6137cb16565b67ffffffffffffffff908116875260408701516111f1916110d491168463ffffffff6137cb16565b67ffffffffffffffff908116604080890191825260008e8152600a60209081529181208a518154938c0151945160608d0151871678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff918816700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff97891668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff949099167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909716969096179290921696909617949094169290921793909316919091179055611315858463ffffffff61387216565b90508d73ffffffffffffffffffffffffffffffffffffffff168f7f5a0def86b68ea53595ef32019b93a42eedf7c609407f51834703faa48bd592d08e848760405180848152602001838152602001828152602001935050505060405180910390a38b61138082613825565b61138985613825565b9b509b509b5050505050505050505093509350939050565b60055460ff1690565b6000610b636113b76133d3565b84610d7c85600160006113c86133d3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6137cb16565b600080805b84518110156114e657600061143886838151811061142a57fe5b6020026020010151866139d7565b90506114548367ffffffffffffffff831663ffffffff6137cb16565b925067ffffffffffffffff8116156114dd578473ffffffffffffffffffffffffffffffffffffffff1686838151811061148957fe5b60200260200101517fb931a8416f2f16d5400a0cce933872df77c3cfcadae032ff6b1646e8cdc12a3c83604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a35b50600101611410565b50604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602481018390529051309163a9059cbb9160448083019260209291908290030181600087803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b505050506040513d602081101561158657600080fd5b50611592905081613825565b949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff16611604576040805162461bcd60e51b815260206004820152601f60248201527f7468652061756374696f6e20636f6e7472616374206973206e6f742073657400604482015290519081900360640190fd5b600061160f82610cb2565b905060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b15801561168757600080fd5b505afa15801561169b573d6000803e3d6000fd5b505050506040513d60808110156116b157600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff831661172f576040805162461bcd60e51b815260206004820152601a60248201527f74686520626f6e64206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b67ffffffffffffffff811661178b576040805162461bcd60e51b815260206004820152601f60248201527f74686520626f6e64206973206e6f742074686520666f726d206f662053425400604482015290519081900360640190fd5b600080611796613b68565b9150915060006117bb838567ffffffffffffffff16846117b4613ca7565b8903611de9565b90508061180f576040805162461bcd60e51b815260206004820152601b60248201527f74686520534254206973206e6f7420696e20656d657267656e63790000000000604482015290519081900360640190fd5b6000611819614707565b50506000878152600a60209081526040918290208251608081018452905467ffffffffffffffff808216808452680100000000000000008304821694840194909452700100000000000000000000000000000000820481169483019490945278010000000000000000000000000000000000000000000000009004909216606083015290816118d257604081015167ffffffffffffffff16156118c4576118c48a6000806001613cab565b505050505050505050610a98565b506000888152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016905560065481517f9da326ef000000000000000000000000000000000000000000000000000000008152600481018e905267ffffffffffffffff8616602482015260016044820152915173ffffffffffffffffffffffffffffffffffffffff90911693639da326ef93606480850194919392918390030190829087803b15801561199157600080fd5b505af11580156119a5573d6000803e3d6000fd5b505050506040513d60208110156119bb57600080fd5b5050600654604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015267ffffffffffffffff841660248201529051899283169163a9059cbb9160448083019260209291908290030181600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b505050506040513d6020811015611a6c57600080fd5b505050505050505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff16611ae4576040805162461bcd60e51b815260206004820152601f60248201527f7468652061756374696f6e20636f6e7472616374206973206e6f742073657400604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff163314611b3a5760405162461bcd60e51b81526004018080602001828103825260238152602001806148ba6023913960400191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b158015611bad57600080fd5b505afa158015611bc1573d6000803e3d6000fd5b505050506040513d6080811015611bd757600080fd5b506040015167ffffffffffffffff16905080611c3a576040805162461bcd60e51b815260206004820152601f60248201527f74686520626f6e64206973206e6f742074686520666f726d206f662053425400604482015290519081900360640190fd5b611c4685858585613cab565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960209081526040808320938352929052205467ffffffffffffffff80821692680100000000000000009092041690565b600060075460001415611cc357611cbc8261271063ffffffff61378916565b9050610cd9565b610b67600754611ce1611cd4610cde565b859063ffffffff61372916565b9063ffffffff61378916565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60065473ffffffffffffffffffffffffffffffffffffffff16611d7f576040805162461bcd60e51b815260206004820152601f60248201527f7468652061756374696f6e20636f6e7472616374206973206e6f742073657400604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff163314611dd55760405162461bcd60e51b81526004018080602001828103825260238152602001806148ba6023913960400191505060405180910390fd5b611ddf828261438a565b5050565b60075490565b600082630bebc200811115611dff5750630bebc2005b626ebe008310611e13576001915050611592565b6000611e3584611e29848063ffffffff61372916565b9063ffffffff61372916565b905066072ba304f800008104600080611e4d83612c37565b915091506000611e5c8b6144c6565b90506000611e698b6144c6565b90506000611e8d611e80858463ffffffff61452616565b849063ffffffff61460916565b90506000611eb383611ea781818c8b63ffffffff61452616565b9063ffffffff61452616565b905060008083131580611ee2575081611edf680118188ff217800000611ea7868063ffffffff61452616565b13155b9f9e505050505050505050505050505050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b455780601f10610b1a57610100808354040283529160200191610b45565b6040805160208082019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016828201527f6c69656e0000000000000000000000000000000000000000000000000000000060488301528051808303602c018152604c9092019052805191012090565b6000610b63611ff96133d3565b84610d7c85604051806060016040528060258152602001614b6660259139600160006120236133d3565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61369216565b6000610b636120746133d3565b84846134ea565b60065460009073ffffffffffffffffffffffffffffffffffffffff166120e8576040805162461bcd60e51b815260206004820152601f60248201527f7468652061756374696f6e20636f6e7472616374206973206e6f742073657400604482015290519081900360640190fd5b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b15801561215e57600080fd5b505afa158015612172573d6000803e3d6000fd5b505050506040513d608081101561218857600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff8316612206576040805162461bcd60e51b815260206004820152601a60248201527f74686520626f6e64206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b67ffffffffffffffff811661224c5760405162461bcd60e51b815260040180806020018281038252602a815260200180614752602a913960400191505060405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000612275613ca7565b0182116122b35760405162461bcd60e51b815260040180806020018281038252603c81526020018061479e603c913960400191505060405180910390fd5b620186a067ffffffffffffffff82160667ffffffffffffffff1660001461230b5760405162461bcd60e51b8152600401808060200182810382526022815260200180614b446022913960400191505060405180910390fd5b600654604080517fecfb314d00000000000000000000000000000000000000000000000000000000815260048101889052905160009273ffffffffffffffffffffffffffffffffffffffff169163ecfb314d916024808301926020929190829003018186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d60208110156123a757600080fd5b5051600654604080517f9737d6fd00000000000000000000000000000000000000000000000000000000815260048101849052905192935073ffffffffffffffffffffffffffffffffffffffff90911691639737d6fd91602480820192602092909190829003018186803b15801561241e57600080fd5b505afa158015612432573d6000803e3d6000fd5b505050506040513d602081101561244857600080fd5b505167ffffffffffffffff16156124a6576040805162461bcd60e51b815260206004820152601860248201527f7468697320534254206973206f6e20612061756369746f6e0000000000000000604482015290519081900360640190fd5b6000806124b1613b68565b9150915060006124d6838667ffffffffffffffff16846124cf613ca7565b8a03612a9a565b604080518215815290519192508a917fea0241146eaea8e64956684a8df42cc134671b71fcc2b474bcbd63f30b32984f9181900360200190a21598975050505050505050565b60008061252884610cb2565b90506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b876040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b15801561259e57600080fd5b505afa1580156125b2573d6000803e3d6000fd5b505050506040513d60808110156125c857600080fd5b50805160409091015190925067ffffffffffffffff16905073ffffffffffffffffffffffffffffffffffffffff8216612648576040805162461bcd60e51b815260206004820152601a60248201527f74686520626f6e64206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b8061269a576040805162461bcd60e51b815260206004820152601f60248201527f74686520626f6e64206973206e6f742074686520666f726d206f662053425400604482015290519081900360640190fd5b6126a2614707565b506000838152600a602090815260408083208151608081018352905467ffffffffffffffff808216835268010000000000000000820481168386015270010000000000000000000000000000000082048116838501527801000000000000000000000000000000000000000000000000909104166060808301919091528251908101909252603d808352909392612790926110d492879261487d9083013961278361274b610cde565b6040518060600160405280602c8152602001614822602c91396127836007548f67ffffffffffffffff1661372990919063ffffffff16565b919063ffffffff61466e16565b90506127c06110d48867ffffffffffffffff16846060015167ffffffffffffffff166137cb90919063ffffffff16565b67ffffffffffffffff90811660608401526127de903390891661438a565b604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015267ffffffffffffffff831660248201529051859173ffffffffffffffffffffffffffffffffffffffff83169163a9059cbb916044808201926020929091908290030181600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b505050506040513d602081101561288957600080fd5b50506040805167ffffffffffffffff808b16825284166020820152815133928c927f87efbe374e86e4f26b4593306372ef7f3c1fa4ed256c9d4f7400d00b3f729114929081900390910190a36129016128f267ffffffffffffffff84168663ffffffff61372916565b6007549063ffffffff61387216565b6007558251612928906110d49067ffffffffffffffff90811690851663ffffffff61387216565b67ffffffffffffffff90811684526020840151612953916110d491811690851663ffffffff6137cb16565b67ffffffffffffffff90811660208086019182526000988952600a905260409788902085518154925199870151606090970151841678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff978516700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9b861668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009095169490941791909116939093179890981617939093169290921790945550919250505092915050565b60086020526000908152604090205467ffffffffffffffff1681565b6000610b67823361140b565b60006002850261c3508502108015612ab457506212750082105b15612ac157506000611592565b630bebc200831115612ad557506001611592565b626ebe008210612ae757506001611592565b6000612afd83611e29868063ffffffff61372916565b905066072ba304f800008104600080612b1583612c37565b915091506000612b248a6144c6565b90506000612b318a6144c6565b90506000612b6a612b4d6003611ea7878663ffffffff61452616565b612b5e85600263ffffffff61452616565b9063ffffffff61460916565b90506000612b876009611ea7858181818e8d63ffffffff61452616565b905060008083131580612bb6575081612bb3680118188ff217800000611ea7868063ffffffff61452616565b13155b9e9d5050505050505050505050505050565b600960209081526000928352604080842090915290825290205467ffffffffffffffff808216916801000000000000000090041682565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60008062c320408311612c51575060009050612af8612d98565b630394b7b18311612c6a5750615a4090506115bc612d98565b6307f7cae48311612ca257506206400090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81fc612d98565b630bf379008311612cda5750621f126990507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1e88612d98565b630fc0bf018311612d12575062817ac190507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffae894612d98565b63134fd9008311612d4b57506301af0c8990507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4f33b612d98565b6040805162461bcd60e51b815260206004820152600e60248201527f6e6f742061636365707461626c65000000000000000000000000000000000000604482015290519081900360640190fd5b915091565b60065473ffffffffffffffffffffffffffffffffffffffff16612e07576040805162461bcd60e51b815260206004820152601f60248201527f7468652061756374696f6e20636f6e7472616374206973206e6f742073657400604482015290519081900360640190fd5b6000612e1282610cb2565b905060008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b158015612e8a57600080fd5b505afa158015612e9e573d6000803e3d6000fd5b505050506040513d6080811015612eb457600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff8316612f32576040805162461bcd60e51b815260206004820152601a60248201527f74686520626f6e64206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b67ffffffffffffffff8116612f8e576040805162461bcd60e51b815260206004820152601f60248201527f74686520626f6e64206973206e6f742074686520666f726d206f662053425400604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000000000000612fb7613ca7565b01821115612ff65760405162461bcd60e51b815260040180806020018281038252602e815260200180614ac8602e913960400191505060405180910390fd5b6000613000614707565b50506000848152600a60209081526040918290208251608081018452905467ffffffffffffffff808216808452680100000000000000008304821694840194909452700100000000000000000000000000000000820481169483019490945278010000000000000000000000000000000000000000000000009004909216606083015290816130b657604081015167ffffffffffffffff16156130ab576130ab876000806001613cab565b505050505050610a98565b506000858152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001690557f0000000000000000000000000000000000000000000000000000000000000000613114613ca7565b0183116131d857600654604080517f9da326ef0000000000000000000000000000000000000000000000000000000081526004810189905267ffffffffffffffff8416602482015260016044820152905173ffffffffffffffffffffffffffffffffffffffff90921691639da326ef916064808201926020929091908290030181600087803b1580156131a657600080fd5b505af11580156131ba573d6000803e3d6000fd5b505050506040513d60208110156131d057600080fd5b506132939050565b600654604080517f9da326ef0000000000000000000000000000000000000000000000000000000081526004810189905267ffffffffffffffff84166024820152600060448201819052915173ffffffffffffffffffffffffffffffffffffffff90931692639da326ef92606480840193602093929083900390910190829087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b505050506040513d602081101561329057600080fd5b50505b600654604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015267ffffffffffffffff841660248201529051869283169163a9059cbb9160448083019260209291908290030181600087803b15801561331857600080fd5b505af115801561332c573d6000803e3d6000fd5b505050506040513d602081101561334257600080fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b73ffffffffffffffffffffffffffffffffffffffff83166134295760405162461bcd60e51b8152600401808060200182810382526024815260200180614a7c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661347b5760405162461bcd60e51b81526004018080602001828103825260228152602001806147da6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661353c5760405162461bcd60e51b8152600401808060200182810382526025815260200180614a576025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661358e5760405162461bcd60e51b815260040180806020018281038252602381526020018061472f6023913960400191505060405180910390fd5b6135998383836146d3565b6135e9816040518060600160405280602681526020016147fc6026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff61369216565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461362b908263ffffffff6137cb16565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156137215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136e65781810151838201526020016136ce565b50505050905090810190601f1680156137135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008261373857506000610b67565b8282028284828161374557fe5b04146137825760405162461bcd60e51b815260040180806020018281038252602181526020018061490b6021913960400191505060405180910390fd5b9392505050565b600061378283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061466e565b600082820183811015613782576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600068010000000000000000821061386e5760405162461bcd60e51b815260040180806020018281038252602681526020018061492c6026913960400191505060405180910390fd5b5090565b600061378283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613692565b73ffffffffffffffffffffffffffffffffffffffff821661391c576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b613928600083836146d3565b60025461393b908263ffffffff6137cb16565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054613974908263ffffffff6137cb16565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60006139e1614707565b506000838152600b60209081526040918290208251608081018452905467ffffffffffffffff80821683526801000000000000000082048116938301939093527001000000000000000000000000000000008104909216928101929092527801000000000000000000000000000000000000000000000000900460ff16151560608201819052613a75576000915050610b67565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260096020818152604080842088855290915280832080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081169091559084015167ffffffffffffffff808316946801000000000000000090930481169391169190613afe908590613729565b613b166305f5e100611ce1858763ffffffff61372916565b1115613b4957613b2d84600963ffffffff61372916565b613b456305f5e100611ce1858763ffffffff61372916565b0390505b613b5c6110d4828663ffffffff6146d816565b98975050505050505050565b600080600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3e6ba946040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613bd557600080fd5b505af1158015613be9573d6000803e3d6000fd5b505050506040513d6020811015613bff57600080fd5b5051600554604080517f3af2888b000000000000000000000000000000000000000000000000000000008152905192945061010090910473ffffffffffffffffffffffffffffffffffffffff1691633af2888b916004808201926020929091908290030181600087803b158015613c7557600080fd5b505af1158015613c89573d6000803e3d6000fd5b505050506040513d6020811015613c9f57600080fd5b505190509091565b4290565b6000613cb685610cb2565b9050613cc0614707565b506000818152600b60209081526040918290208251608081018452905467ffffffffffffffff80821680845268010000000000000000830482169484019490945270010000000000000000000000000000000082048116948301949094527801000000000000000000000000000000000000000000000000900460ff161515606082015291613d54916110d49187166137cb565b67ffffffffffffffff90811682526020820151613d7f916110d491811690881663ffffffff6137cb16565b67ffffffffffffffff166020820152821561427257613d9c614707565b506000828152600a602090815260408083208151608081018352905467ffffffffffffffff8082168352680100000000000000008204811694830194909452700100000000000000000000000000000000810484169282018390527801000000000000000000000000000000000000000000000000900490921660608301529091908190613e3190600963ffffffff61372916565b90506000613e5682856040015167ffffffffffffffff166137cb90919063ffffffff16565b90506000613e89866020015167ffffffffffffffff16866060015167ffffffffffffffff166137cb90919063ffffffff16565b905082811115613ee957808210613ec1576060850151613eba90839067ffffffffffffffff1663ffffffff61387216565b9350613ee4565b6060850151613ee190829067ffffffffffffffff1663ffffffff61387216565b93505b613f1b565b613f18866020015167ffffffffffffffff16866040015167ffffffffffffffff166137cb90919063ffffffff16565b93505b50505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b8a6040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b158015613f9157600080fd5b505afa158015613fa5573d6000803e3d6000fd5b505050506040513d6080811015613fbb57600080fd5b50604001519050613fcc308361438a565b613ffe6110d4856020015167ffffffffffffffff16856060015167ffffffffffffffff166137cb90919063ffffffff16565b67ffffffffffffffff9081166060850152845161402e9161402991811690841663ffffffff61372916565b6146ee565b83516020840151614056916110d49167ffffffffffffffff908116911663ffffffff6137cb16565b67ffffffffffffffff166020808501829052604080516060810190915260388082526140ae936110d493909291906149c49083013960608701516127839067ffffffffffffffff166305f5e10063ffffffff61372916565b67ffffffffffffffff90811660408087019190915260016060870181905260008c8152600860205291909120546140f1926110d49291169063ffffffff6137cb16565b60008a8152600860209081526040808320805467ffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000091821617909155898452600a835281842088518154948a0151938a015160608b0151881678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff918916700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff968a1668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff94909a169790951696909617919091169690961792909216179390931617909155614218610cde565b604080870151600754825167ffffffffffffffff90921682526020820184905281830152905191925087917fc96942e0138bef71dbf15b3512ad2970a8a07aeea02f0c50a94d373906dbf4cb9181900360600190a2505050505b6000918252600b60209081526040928390208251815492840151948401516060909401517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931667ffffffffffffffff918216177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000095821695909502949094177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009490931693909302919091177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009115159190910217905550505050565b73ffffffffffffffffffffffffffffffffffffffff82166143dc5760405162461bcd60e51b81526004018080602001828103825260218152602001806149fc6021913960400191505060405180910390fd5b6143e8826000836146d3565b6144388160405180606001604052806022815260200161477c6022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260208190526040902054919063ffffffff61369216565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254614471908263ffffffff61387216565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061386e5760405162461bcd60e51b8152600401808060200182810382526028815260200180614aa06028913960400191505060405180910390fd5b60008261453557506000610b67565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14801561458357507f800000000000000000000000000000000000000000000000000000000000000082145b156145bf5760405162461bcd60e51b815260040180806020018281038252602781526020018061497a6027913960400191505060405180910390fd5b828202828482816145cc57fe5b05146137825760405162461bcd60e51b815260040180806020018281038252602781526020018061497a6027913960400191505060405180910390fd5b600081830381831280159061461e5750838113155b80614633575060008312801561463357508381135b6137825760405162461bcd60e51b8152600401808060200182810382526024815260200180614b206024913960400191505060405180910390fd5b600081836146bd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156136e65781810151838201526020016136ce565b5060008385816146c957fe5b0495945050505050565b505050565b60008183106146e75781613782565b5090919050565b600754614701908263ffffffff61387216565b60075550565b6040805160808101825260008082526020820181905291810182905260608101919091529056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737374686520626f6e6420646f6573206e6f74206d6174636820746f2074686520666f726d206f662053425445524332303a206275726e20616d6f756e7420657863656564732062616c616e636561207265717565737420746f20686f6c6420616e2061756374696f6e206f662074686520626f6e642068617320616c7265616479206578706972656445524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636573797374656d206572726f723a20746f74616c537570706c79206e65766572206265636f6d6573207a65726f53425420776974682074686520626f6e644944206973206e6f742063757272656e746c792061636365707461626c6573797374656d206572726f723a20736f6c6964537472696b655072696365206e65766572206265636f6d6573207a65726f205b756e6c6f636b5342545d6d73672e73656e646572206d7573742062652061756374696f6e20636f6e74726163746f6e6c79206465706c6f79657220697320616c6c6f77656420746f2063616c6c20746869732066756e6374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e203634206269747345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77636f6e74726163742073686f756c64206265206e6f6e2d7a65726f206164647265737373797374656d3a2074686520746f74616c20756e6c6f636b20616d6f756e742073686f756c64206265206e6f6e2d7a65726f2076616c756545524332303a206275726e2066726f6d20746865207a65726f20616464726573736d696e7420616d6f756e74206e65656420746f2062652067726561746572207468616e203530302069646f6c20666f72207468697320626f6e6445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235366d61747572697479206973206c61746572207468616e2074686520726567756c61722061756374696f6e5370616e7468652061756374696f6e20636f6e747261637420697320616c726561647920726567697374657265645369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f7774686520737472696b65207072696365206e65656420746f20626520242031302a5845524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d085672f8467497f59973194f9b1d4d97c7592939b63afb78bc9add4e0e727e664736f6c63430006060033636f6e74726163742073686f756c64206265206e6f6e2d7a65726f2061646472657373000000000000000000000000120a078fdc516a1a98bbecb9e961f8741ac7ac820000000000000000000000008b24f5c764ab741bc8a2426505bda458c30df010000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000015f900000000000000000000000000000000000000000000000000000000ba43b7400