60806040526000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601a556001601d60006101000a81548160ff0219169083151502179055506000602060006101000a81548160ff0219169083151502179055503480156200008257600080fd5b50604051620068d6380380620068d683398181016040526040811015620000a857600080fd5b8101908080516040519392919084640100000000821115620000c957600080fd5b83820191506020820185811115620000e057600080fd5b8251866001820283011164010000000082111715620000fe57600080fd5b8083526020830192505050908051906020019080838360005b838110156200013457808201518184015260208101905062000117565b50505050905090810190601f168015620001625780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200018657600080fd5b838201915060208201858111156200019d57600080fd5b8251866001820283011164010000000082111715620001bb57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001f1578082015181840152602081019050620001d4565b50505050905090810190601f1680156200021f5780820380516001836020036101000a031916815260200191505b5060405250505081818181620002426301ffc9a760e01b6200043c60201b60201c565b6200025a6380ac58cd60e01b6200043c60201b60201c565b6200027263780e9d6360e01b6200043c60201b60201c565b81600990805190602001906200028a929190620008d0565b5080600a9080519060200190620002a3929190620008d0565b50620002bc635b5e139f60e01b6200043c60201b60201c565b505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200038d336200054560201b60201c565b6001601081905550620003a633620005a660201b60201c565b5050620003c063eab83e2060e01b6200043c60201b60201c565b620003d863fac27f4660e01b6200043c60201b60201c565b620003f06342966c6860e01b6200043c60201b60201c565b6200040133620006ab60201b60201c565b6000602260006101000a81548160ff02191690831515021790555062000434634d5507ff60e01b6200043c60201b60201c565b50506200097f565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620004d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4b495031333a20696e76616c696420696e74657266616365206964000000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6200056081600d6200070c60201b620050b51790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414620005f357600080fd5b601c8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000601c80549050905080601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b620006c68160216200070c60201b620050b51790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6200071e8282620007f060201b60201c565b1562000792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620068b46022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200091357805160ff191683800117855562000944565b8280016001018555821562000944579182015b828111156200094357825182559160200191906001019062000926565b5b50905062000953919062000957565b5090565b6200097c91905b80821115620009785760008160009055506001016200095e565b5090565b90565b615f25806200098f6000396000f3fe6080604052600436106103765760003560e01c806370a08231116101d1578063a22cb46511610102578063e8c61e19116100a0578063f07a6c6a1161006f578063f07a6c6a146115ea578063f0ca689d14611665578063f2c4ce1e146116ca578063f2fde38b1461179257610376565b8063e8c61e1914611494578063e985e9c5146114e5578063eb7b5a031461156e578063efc08726146115d357610376565b8063b767a098116100dc578063b767a09814611228578063b88d4fde14611265578063c87b56dd14611377578063db4bec441461142b57610376565b8063a22cb465146110eb578063a386756114611148578063aa271e1a146111bf57610376565b80638456cb591161016f578063940cd05b11610149578063940cd05b14610fb657806395d89b4114610ff3578063983b2d561461108357806398650275146110d457610376565b80638456cb5914610f195780638da5cb5b14610f305780638f32d59b14610f8757610376565b806375a1ed08116101ab57806375a1ed0814610df55780637cb6475914610e50578063818668d714610e8b57806382dc1ec414610ec857610376565b806370a0823114610d4e578063715018a614610db35780637518a2a714610dca57610376565b80633f4ba83a116102ab57806351830227116102495780635ed40adb116102235780635ed40adb14610c505780636352211e14610c8d5780636caede3d14610d085780636ef8d66d14610d3757610376565b80635183022714610b2a57806355f804b314610b595780635c975abb14610c2157610376565b806342966c681161028557806342966c681461092d57806346fbf68e146109685780634f6ccce7146109d157806350bb4e7f14610a2057610376565b80633f4ba83a1461082857806340c10f191461083f57806342842e0e146108b257610376565b80631dd8792b116103185780632db11544116102f25780632db11544146107495780632eb4a7ab146107775780632f745c59146107a25780633ccfd60b1461081157610376565b80631dd8792b146105fe57806323b872dd146106515780632b2d2fb5146106cc57610376565b8063095ea7b311610354578063095ea7b3146104f85780630ef13d6f146105535780630f4161aa146105a457806318160ddd146105d357610376565b806301ffc9a71461037b57806306fdde03146103ed578063081812fc1461047d575b600080fd5b34801561038757600080fd5b506103d36004803603602081101561039e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506117e3565b604051808215151515815260200191505060405180910390f35b3480156103f957600080fd5b5061040261184a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610442578082015181840152602081019050610427565b50505050905090810190601f16801561046f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048957600080fd5b506104b6600480360360208110156104a057600080fd5b81019080803590602001909291905050506118ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050457600080fd5b506105516004803603604081101561051b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611987565b005b34801561055f57600080fd5b506105a26004803603602081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a18565b005b3480156105b057600080fd5b506105b9611c37565b604051808215151515815260200191505060405180910390f35b3480156105df57600080fd5b506105e8611c4a565b6040518082815260200191505060405180910390f35b34801561060a57600080fd5b50610613611c57565b6040518082600760200280838360005b8381101561063e578082015181840152602081019050610623565b5050505090500191505060405180910390f35b34801561065d57600080fd5b506106ca6004803603606081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cb1565b005b3480156106d857600080fd5b5061072f600480360360608110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611d44565b604051808215151515815260200191505060405180910390f35b6107756004803603602081101561075f57600080fd5b8101908080359060200190929190505050611dd7565b005b34801561078357600080fd5b5061078c612225565b6040518082815260200191505060405180910390f35b3480156107ae57600080fd5b506107fb600480360360408110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061222b565b6040518082815260200191505060405180910390f35b34801561081d57600080fd5b506108266122ea565b005b34801561083457600080fd5b5061083d612391565b005b34801561084b57600080fd5b506108986004803603604081101561086257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124f1565b604051808215151515815260200191505060405180910390f35b3480156108be57600080fd5b5061092b600480360360608110156108d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612565565b005b34801561093957600080fd5b506109666004803603602081101561095057600080fd5b8101908080359060200190929190505050612585565b005b34801561097457600080fd5b506109b76004803603602081101561098b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f0565b604051808215151515815260200191505060405180910390f35b3480156109dd57600080fd5b50610a0a600480360360208110156109f457600080fd5b810190808035906020019092919050505061260d565b6040518082815260200191505060405180910390f35b348015610a2c57600080fd5b50610b1060048036036060811015610a4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a8a57600080fd5b820183602082011115610a9c57600080fd5b80359060200191846001830284011164010000000083111715610abe57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061268d565b604051808215151515815260200191505060405180910390f35b348015610b3657600080fd5b50610b3f61270c565b604051808215151515815260200191505060405180910390f35b348015610b6557600080fd5b50610c1f60048036036020811015610b7c57600080fd5b8101908080359060200190640100000000811115610b9957600080fd5b820183602082011115610bab57600080fd5b80359060200191846001830284011164010000000083111715610bcd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061271f565b005b348015610c2d57600080fd5b50610c36612797565b604051808215151515815260200191505060405180910390f35b348015610c5c57600080fd5b50610c8b60048036036020811015610c7357600080fd5b810190808035151590602001909291905050506127ae565b005b348015610c9957600080fd5b50610cc660048036036020811015610cb057600080fd5b81019080803590602001909291905050506127cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1457600080fd5b50610d1d612893565b604051808215151515815260200191505060405180910390f35b348015610d4357600080fd5b50610d4c6128a6565b005b348015610d5a57600080fd5b50610d9d60048036036020811015610d7157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128b1565b6040518082815260200191505060405180910390f35b348015610dbf57600080fd5b50610dc8612986565b005b348015610dd657600080fd5b50610ddf612ac1565b6040518082815260200191505060405180910390f35b348015610e0157600080fd5b50610e4e60048036036040811015610e1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b08565b005b348015610e5c57600080fd5b50610e8960048036036020811015610e7357600080fd5b8101908080359060200190929190505050612c24565b005b348015610e9757600080fd5b50610ec660048036036020811015610eae57600080fd5b81019080803515159060200190929190505050612c8c565b005b348015610ed457600080fd5b50610f1760048036036020811015610eeb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d07565b005b348015610f2557600080fd5b50610f2e612d71565b005b348015610f3c57600080fd5b50610f45612ed2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f9357600080fd5b50610f9c612efc565b604051808215151515815260200191505060405180910390f35b348015610fc257600080fd5b50610ff160048036036020811015610fd957600080fd5b81019080803515159060200190929190505050612f54565b005b348015610fff57600080fd5b50611008612fcf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104857808201518184015260208101905061102d565b50505050905090810190601f1680156110755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561108f57600080fd5b506110d2600480360360208110156110a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613071565b005b3480156110e057600080fd5b506110e96130db565b005b3480156110f757600080fd5b506111466004803603604081101561110e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506130e6565b005b34801561115457600080fd5b506111bd600480360360e081101561116b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050613177565b005b3480156111cb57600080fd5b5061120e600480360360208110156111e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061320f565b604051808215151515815260200191505060405180910390f35b34801561123457600080fd5b506112636004803603602081101561124b57600080fd5b8101908080351515906020019092919050505061322c565b005b34801561127157600080fd5b506113756004803603608081101561128857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156112ef57600080fd5b82018360208201111561130157600080fd5b8035906020019184600183028401116401000000008311171561132357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506132a7565b005b34801561138357600080fd5b506113b06004803603602081101561139a57600080fd5b8101908080359060200190929190505050613319565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156113f05780820151818401526020810190506113d5565b50505050905090810190601f16801561141d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561143757600080fd5b5061147a6004803603602081101561144e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135d8565b604051808215151515815260200191505060405180910390f35b3480156114a057600080fd5b506114e3600480360360208110156114b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135f8565b005b3480156114f157600080fd5b506115546004803603604081101561150857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136fc565b604051808215151515815260200191505060405180910390f35b34801561157a57600080fd5b506115bd6004803603602081101561159157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613790565b6040518082815260200191505060405180910390f35b3480156115df57600080fd5b506115e86137d9565b005b3480156115f657600080fd5b506116236004803603602081101561160d57600080fd5b8101908080359060200190929190505050613818565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561167157600080fd5b506116b46004803603602081101561168857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061385c565b6040518082815260200191505060405180910390f35b3480156116d657600080fd5b50611790600480360360208110156116ed57600080fd5b810190808035906020019064010000000081111561170a57600080fd5b82018360208201111561171c57600080fd5b8035906020019184600183028401116401000000008311171561173e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506138a5565b005b34801561179e57600080fd5b506117e1600480360360208110156117b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061391d565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118e25780601f106118b7576101008083540402835291602001916118e2565b820191906000526020600020905b8154815290600101906020018083116118c557829003601f168201915b5050505050905090565b60006118f7826139a3565b61194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615e64602b913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b602260009054906101000a900460ff1615611a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611a148282613a15565b5050565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a6557600080fd5b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006001820390506000601c80549050905060006001820390506000601c8281548110611ad257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080601c8581548110611b0d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c805480611b6057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905581841415611bea575050505050611c34565b84601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505b50565b601960019054906101000a900460ff1681565b6000600780549050905090565b611c5f615a20565b611c67615a20565b6040518060e00160405280600f5481526020016010548152602001601154815260200160125481526020016014548152602001601554815260200160165481525090508091505090565b602260009054906101000a900460ff1615611d34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611d3f838383613c0b565b505050565b6000611d4f3361320f565b611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b60008090505b82811015611dcb57611dbe85828601613c7a565b8080600101915050611daa565b50600190509392505050565b601960019054906101000a900460ff16611e59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546865207075626c69632073616c65206973206e6f7420656e61626c6564210081525060200191505060405180910390fd5b43611eae600f54600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c9b90919063ffffffff16565b10611f21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f426f74206973206e6f7420616c6c6f776564000000000000000000000000000081525060200191505060405180910390fd5b601454431015611f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f74207965742073746172746564000000000000000000000000000000000081525060200191505060405180910390fd5b600081118015611fab57506011548111155b612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615be06021913960400191505060405180910390fd5b61201581601654613d2390919063ffffffff16565b3414612089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420656e6f756768204b6c6179000000000000000000000000000000000081525060200191505060405180910390fd5b6001601554016120a482601054613c9b90919063ffffffff16565b1115612118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f457863656564206d617820616d6f756e7400000000000000000000000000000081525060200191505060405180910390fd5b60125481612125336128b1565b01111561219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f457863656564206d617820616d6f756e742070657220706572736f6e0000000081525060200191505060405180910390fd5b60008090505b818110156121dd576121b433601054613c7a565b6121ca6001601054613c9b90919063ffffffff16565b60108190555080806001019150506121a0565b5043600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b601e5481565b6000612236836128b1565b821061228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615c24602a913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106122d757fe5b9060005260206000200154905092915050565b6122f33361320f565b612348576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561238e573d6000803e3d6000fd5b50565b61239a336125f0565b6123ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615b8a6030913960400191505060405180910390fd5b602260009054906101000a900460ff16612471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000602260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006124fc3361320f565b612551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b61255b8383613c7a565b6001905092915050565b612580838383604051806020016040528060008152506132a7565b505050565b61258f3382613da9565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615d95602f913960400191505060405180910390fd5b6125ed81613e9d565b50565b6000612606826021613eb290919063ffffffff16565b9050919050565b6000612617611c4a565b821061266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615e15602b913960400191505060405180910390fd5b6007828154811061267b57fe5b90600052602060002001549050919050565b60006126983361320f565b6126ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b6126f78484613c7a565b6127018383613f90565b600190509392505050565b601960009054906101000a900460ff1681565b6127283361320f565b61277d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b8060179080519060200190612793929190615a42565b5050565b6000602260009054906101000a900460ff16905090565b80601d60006101000a81548160ff02191690831515021790555050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561288a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615c9f6028913960400191505060405180910390fd5b80915050919050565b602060009054906101000a900460ff1681565b6128af3361401a565b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612938576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615dc46029913960400191505060405180910390fd5b61297f600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614074565b9050919050565b61298e612efc565b612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b612b113361320f565b612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b60008111612bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7a65726f2072657175657374000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008090505b81811015612c1f57612bf683601054613c7a565b612c0c6001601054613c9b90919063ffffffff16565b6010819055508080600101915050612be2565b505050565b612c2d3361320f565b612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b80601e8190555050565b612c953361320f565b612cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b612d10336125f0565b612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615b8a6030913960400191505060405180910390fd5b612d6e81614082565b50565b612d7a336125f0565b612dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615b8a6030913960400191505060405180910390fd5b602260009054906101000a900460ff1615612e52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001602260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b612f5d3361320f565b612fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130675780601f1061303c57610100808354040283529160200191613067565b820191906000526020600020905b81548152906001019060200180831161304a57829003601f168201915b5050505050905090565b61307a3361320f565b6130cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b6130d8816140dc565b50565b6130e433614136565b565b602260009054906101000a900460ff1615613169576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6131738282614190565b5050565b6131803361320f565b6131d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b86600f8190555085601181905550846012819055508360148190555082601081905550816015819055508060168190555050505050505050565b600061322582600d613eb290919063ffffffff16565b9050919050565b6132353361320f565b61328a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b80602060006101000a81548160ff02191690831515021790555050565b6132b2848484611cb1565b6132be84848484614333565b613313576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615d656030913960400191505060405180910390fd5b50505050565b6060613324826139a3565b613379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615b5c602e913960400191505060405180910390fd5b60001515601960009054906101000a900460ff16151514156134b657606061339f614895565b905060008151116133bf57604051806020016040528060008152506134ae565b806133c984614937565b6040516020018083805190602001908083835b602083106133ff57805182526020820191506020810190506020830392506133dc565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310613450578051825260208201915060208101905060208303925061342d565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600501925050506040516020818303038152906040525b9150506135d3565b60606134c0614a64565b905060008151116134e057604051806020016040528060008152506135cf565b806134ea84614937565b6040516020018083805190602001908083835b6020831061352057805182526020820191506020810190506020830392506134fd565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310613571578051825260208201915060208101905060208303925061354e565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600501925050506040516020818303038152906040525b9150505b919050565b601f6020528060005260406000206000915054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461364457600080fd5b601c8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000601c80549050905080601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d60009054906101000a900460ff16156138045760006137f8612ac1565b141561380357600080fd5b5b601a60008154809291906001019190505550565b6000601c600183038154811061382a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6138ae3361320f565b613903576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615c4e6030913960400191505060405180910390fd5b8060189080519060200190613919929190615a42565b5050565b613925612efc565b613997576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6139a081614b06565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000613a20826127cb565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4b495031373a20617070726f76616c20746f2063757272656e74206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613b045750613b0381336136fc565b5b613b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180615e8f6037913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b613c153382613da9565b613c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180615d136030913960400191505060405180910390fd5b613c75838383614c4c565b505050565b613c848282614c70565b613c8e8282614e88565b613c9781614f4f565b5050565b600080828401905083811015613d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613d365760009050613da3565b6000828402905082848281613d4757fe5b0414613d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cf26021913960400191505060405180910390fd5b809150505b92915050565b6000613db4826139a3565b613e09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615ec6602b913960400191505060405180910390fd5b6000613e14836127cb565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613e8357508373ffffffffffffffffffffffffffffffffffffffff16613e6b846118ec565b73ffffffffffffffffffffffffffffffffffffffff16145b80613e945750613e9381856136fc565b5b91505092915050565b613eaf613ea9826127cb565b82614f9b565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d436022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613f99826139a3565b613fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615cc7602b913960400191505060405180910390fd5b80600b60008481526020019081526020016000209080519060200190614015929190615a42565b505050565b61402e816021614ff890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b600081600001549050919050565b6140968160216150b590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6140f081600d6150b590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61414a81600d614ff890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4b495031373a20617070726f766520746f2063616c6c6572000000000000000081525060200191505060405180910390fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60008060606143578673ffffffffffffffffffffffffffffffffffffffff16615190565b6143665760019250505061488d565b8573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b33898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561443657808201518184015260208101905061441b565b50505050905090810190601f1680156144635780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106144fb57805182526020820191506020810190506020830392506144d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461455d576040519150601f19603f3d011682016040523d82523d6000602084013e614562565b606091505b50809250819350505060008151141580156145e6575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168180602001905160208110156145b457600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156145f65760019250505061488d565b8573ffffffffffffffffffffffffffffffffffffffff16636745782b60e01b33898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156146c65780820151818401526020810190506146ab565b50505050905090810190601f1680156146f35780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061478b5780518252602082019150602081019050602083039250614768565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146147ed576040519150601f19603f3d011682016040523d82523d6000602084013e6147f2565b606091505b50809250819350505060008151141580156148765750636745782b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681806020019051602081101561484457600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156148865760019250505061488d565b6000925050505b949350505050565b606060188054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561492d5780601f106149025761010080835404028352916020019161492d565b820191906000526020600020905b81548152906001019060200180831161491057829003601f168201915b5050505050905090565b6060600082141561497f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050614a5f565b600082905060005b600082146149a9578080600101915050600a82816149a157fe5b049150614987565b6060816040519080825280601f01601f1916602001820160405280156149de5781602001600182028038833980820191505090505b50905060006001830390505b60008614614a5757600a86816149fc57fe5b0660300160f81b82828060019003935081518110614a1657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8681614a4f57fe5b0495506149ea565b819450505050505b919050565b606060178054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614afc5780601f10614ad157610100808354040283529160200191614afc565b820191906000526020600020905b815481529060010190602001808311614adf57829003601f168201915b5050505050905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615bba6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b614c578383836151a3565b614c6183826153fe565b614c6b8282614e88565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614d13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4b495031373a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b614d1c816139a3565b15614d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4b495031373a20746f6b656e20616c7265616479206d696e746564000000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614e28600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061559c565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b614fa582826155b2565b6000600b600083815260200190815260200160002080546001816001161561010002031660029004905014614ff457600b60008281526020019081526020016000206000614ff39190615ac2565b5b5050565b6150028282613eb2565b615057576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615c7e6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6150bf8282613eb2565b15615132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b8273ffffffffffffffffffffffffffffffffffffffff166151c3826127cb565b73ffffffffffffffffffffffffffffffffffffffff161461522f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615ded6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156152b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615c016023913960400191505060405180910390fd5b6152be816155ec565b615305600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206156aa565b61534c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061559c565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006154566001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506156cd90919063ffffffff16565b9050600060066000848152602001908152602001600020549050818114615543576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106154c357fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061551b57fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036155959190615b0a565b5050505050565b6001816000016000828254019250508190555050565b6155bc8282615717565b6155c682826153fe565b600060066000838152602001908152602001600020819055506155e8816158a6565b5050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146156a75760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6156c2600182600001546156cd90919063ffffffff16565b816000018190555050565b600061570f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615960565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff16615737826127cb565b73ffffffffffffffffffffffffffffffffffffffff16146157a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e406024913960400191505060405180910390fd5b6157ac816155ec565b6157f3600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206156aa565b60006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006158c160016007805490506156cd90919063ffffffff16565b90506000600860008481526020019081526020016000205490506000600783815481106158ea57fe5b90600052602060002001549050806007838154811061590557fe5b906000526020600020018190555081600860008381526020019081526020016000208190555060078054809190600190036159409190615b0a565b506000600860008681526020019081526020016000208190555050505050565b6000838311158290615a0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156159d25780820151818401526020810190506159b7565b50505050905090810190601f1680156159ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6040518060e00160405280600790602082028038833980820191505090505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a8357805160ff1916838001178555615ab1565b82800160010185558215615ab1579182015b82811115615ab0578251825591602001919060010190615a95565b5b509050615abe9190615b36565b5090565b50805460018160011615610100020316600290046000825580601f10615ae85750615b07565b601f016020900490600052602060002090810190615b069190615b36565b5b50565b815481835581811115615b3157818360005260206000209182019101615b309190615b36565b5b505050565b615b5891905b80821115615b54576000816000905550600101615b3c565b5090565b9056fe4b495031374d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f6f206d616e79207265717565737473206f72207a65726f20726571756573744b495031373a207472616e7366657220746f20746865207a65726f20616464726573734b49503137456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654b495031373a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4b495031374d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774b495031373a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734b495031373a207472616e7366657220746f206e6f6e204b49503137526563656976657220696d706c656d656e7465724b495031374275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644b495031373a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734b495031373a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4b49503137456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734b495031373a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4b495031373a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4b495031373a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4b495031373a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656ea265627a7a72315820638cc0c4cfca0a39618603dececb4193e4912329d5dfd9a0f325f3fffd4485b164736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044d5355430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d53554300000000000000000000000000000000000000000000000000000000