60806040523480156200001157600080fd5b506040516200346438038062003464833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051640100000000811115620000a257600080fd5b82810190506020810184811115620000b957600080fd5b8151856001820283011164010000000082111715620000d757600080fd5b505092919050505081818181620001206301ffc9a77c0100000000000000000000000000000000000000000000000000000000026200039d640100000000026401000000009004565b6200015d6380ac58cd7c0100000000000000000000000000000000000000000000000000000000026200039d640100000000026401000000009004565b6200019a63780e9d637c0100000000000000000000000000000000000000000000000000000000026200039d640100000000026401000000009004565b8160099080519060200190620001b29291906200045b565b5080600a9080519060200190620001cb9291906200045b565b5062000209635b5e139f7c0100000000000000000000000000000000000000000000000000000000026200039d640100000000026401000000009004565b5050505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a373f06168e1e86ab16ddf227c2997c8ad6e374e3b5f600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606060405190810160405280603c81526020017f68747470733a2f2f7777772e6b696e67646f6d736265796f6e642e636f6d2f5f81526020017f6170692f76312f746f6b656e2f676574417373657444657461696c2f00000000815250600e9080519060200190620003949291906200045b565b5050506200050a565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515620003ef57600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200049e57805160ff1916838001178555620004cf565b82800160010185558215620004cf579182015b82811115620004ce578251825591602001919060010190620004b1565b5b509050620004de9190620004e2565b5090565b6200050791905b8082111562000503576000816000905550600101620004e9565b5090565b90565b612f4a806200051a6000396000f3fe60806040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461014357806306fdde03146101b5578063081812fc14610245578063095ea7b3146102c057806318160ddd1461031b57806323b872dd146103465780632f745c59146103c157806330176e131461043057806342842e0e146104b657806342966c681461053157806347b64eb01461056c5780634f6ccce7146105bd5780636352211e1461060c57806370a0823114610687578063715018a6146106ec5780638da5cb5b146107035780638f32d59b1461075a57806395d89b4114610789578063a22cb46514610819578063b88d4fde14610876578063c87b56dd14610988578063d11a61ab14610a3c578063e985e9c514610b98578063f2fde38b14610c21575b600080fd5b34801561014f57600080fd5b5061019b6004803603602081101561016657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610c72565b604051808215151515815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610cd9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020a5780820151818401526020810190506101ef565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025157600080fd5b5061027e6004803603602081101561026857600080fd5b8101908080359060200190929190505050610d7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102cc57600080fd5b50610319600480360360408110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dcc565b005b34801561032757600080fd5b50610330610f11565b6040518082815260200191505060405180910390f35b34801561035257600080fd5b506103bf6004803603606081101561036957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1e565b005b3480156103cd57600080fd5b5061041a600480360360408110156103e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f43565b6040518082815260200191505060405180910390f35b34801561043c57600080fd5b506104b46004803603602081101561045357600080fd5b810190808035906020019064010000000081111561047057600080fd5b82018360208201111561048257600080fd5b803590602001918460018302840111640100000000831117156104a457600080fd5b9091929391929390505050610fba565b005b3480156104c257600080fd5b5061052f600480360360608110156104d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe3565b005b34801561053d57600080fd5b5061056a6004803603602081101561055457600080fd5b8101908080359060200190929190505050611004565b005b34801561057857600080fd5b506105bb6004803603602081101561058f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611025565b005b3480156105c957600080fd5b506105f6600480360360208110156105e057600080fd5b810190808035906020019092919050505061107c565b6040518082815260200191505060405180910390f35b34801561061857600080fd5b506106456004803603602081101561062f57600080fd5b81019080803590602001909291905050506110b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069357600080fd5b506106d6600480360360208110156106aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611132565b6040518082815260200191505060405180910390f35b3480156106f857600080fd5b506107016111b6565b005b34801561070f57600080fd5b5061071861128a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076657600080fd5b5061076f6112b4565b604051808215151515815260200191505060405180910390f35b34801561079557600080fd5b5061079e61130c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107de5780820151818401526020810190506107c3565b50505050905090810190601f16801561080b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082557600080fd5b506108746004803603604081101561083c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506113ae565b005b34801561088257600080fd5b506109866004803603608081101561089957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561090057600080fd5b82018360208201111561091257600080fd5b8035906020019184600183028401116401000000008311171561093457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114ea565b005b34801561099457600080fd5b506109c1600480360360208110156109ab57600080fd5b8101908080359060200190929190505050611512565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a015780820151818401526020810190506109e6565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a4857600080fd5b50610b9660048036036040811015610a5f57600080fd5b8101908080359060200190640100000000811115610a7c57600080fd5b820183602082011115610a8e57600080fd5b80359060200191846020830284011164010000000083111715610ab057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b1057600080fd5b820183602082011115610b2257600080fd5b80359060200191846001830284011164010000000083111715610b4457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115c7565b005b348015610ba457600080fd5b50610c0760048036036040811015610bbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611721565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c7060048036036020811015610c4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b5565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b5050505050905090565b6000610d86826117d4565b1515610d9157600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610dd7826110b4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610e1457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e545750610e538133611721565b5b1515610e5f57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610f283382611846565b1515610f3357600080fd5b610f3e8383836118db565b505050565b6000610f4e83611132565b82101515610f5b57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610fa757fe5b9060005260206000200154905092915050565b610fc26112b4565b1515610fcd57600080fd5b8181600e9190610fde929190612e05565b505050565b610fff83838360206040519081016040528060008152506114ea565b505050565b61100e3382611846565b151561101957600080fd5b611022816118ff565b50565b61102d6112b4565b151561103857600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611086610f11565b8210151561109357600080fd5b6007828154811015156110a257fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561112957600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561116f57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111be6112b4565b15156111c957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113a45780601f10611379576101008083540402835291602001916113a4565b820191906000526020600020905b81548152906001019060200180831161138757829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156113e957600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6114f5848484610f1e565b61150184848484611914565b151561150c57600080fd5b50505050565b60606115c0600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115ad5780601f10611582576101008083540402835291602001916115ad565b820191906000526020600020905b81548152906001019060200180831161159057829003601f168201915b50505050506115bb84611b37565b611c90565b9050919050565b60003383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828051906020019060200280838360005b8381101561163f578082015181840152602081019050611624565b5050505090500192505050604051602081830303815290604052805190602001209050600061167f8361167184611cd7565b611d2f90919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116dd57600080fd5b60008090505b845181101561171a5761170d3386838151811015156116fe57fe5b90602001906020020151611e13565b80806001019150506116e3565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117bd6112b4565b15156117c857600080fd5b6117d181611e34565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080611852836110b4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118c157508373ffffffffffffffffffffffffffffffffffffffff166118a984610d7b565b73ffffffffffffffffffffffffffffffffffffffff16145b806118d257506118d18185611721565b5b91505092915050565b6118e6838383611f30565b6118f08382612195565b6118fa8282612339565b505050565b61191161190b826110b4565b82612400565b50565b60006119358473ffffffffffffffffffffffffffffffffffffffff1661245f565b15156119445760019050611b2f565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611a3b578082015181840152602081019050611a20565b50505050905090810190601f168015611a685780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b505050506040513d6020811015611ab457600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b60606000821415611b7f576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c8b565b600082905060005b600082141515611bad578080600101915050600a82811515611ba557fe5b049150611b87565b6060816040519080825280601f01601f191660200182016040528015611be25781602001600182028038833980820191505090505b50905060006001830390505b600086141515611c8357600a86811515611c0457fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515611c3f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86811515611c7b57fe5b049550611bee565b819450505050505b919050565b6060611ccf8383602060405190810160405280600081525060206040519081016040528060008152506020604051908101604052806000815250612472565b905092915050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b60008060008060418551141515611d4c5760009350505050611e0d565b6020850151925060408501519150606085015160001a9050601b8160ff161015611d7757601b810190505b601b8160ff1614158015611d8f5750601c8160ff1614155b15611da05760009350505050611e0d565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611dfd573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b611e1d8282612891565b611e278282612339565b611e3081612a2a565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e7057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff16611f50826110b4565b73ffffffffffffffffffffffffffffffffffffffff16141515611f7257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b611fb781612a76565b61200a6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a06001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006121ed6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612b3690919063ffffffff16565b905060006006600084815260200190815260200160002054905081811415156122e0576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561225e57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811015156122b857fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036123329190612e85565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b61240a8282612b79565b6000600b600083815260200190815260200160002080546001816001161561010002031660029004905014151561245b57600b6000828152602001908152602001600020600061245a9190612eb1565b5b5050565b600080823b905060008111915050919050565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f1916602001820160405280156124ce5781602001600182028038833980820191505090505b5090506060819050600080905060008090505b88518110156125945788818151811015156124f857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561255757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506124e1565b5060008090505b875181101561264e5787818151811015156125b257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561261157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061259b565b5060008090505b865181101561270857868181518110151561266c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156126cb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612655565b5060008090505b85518110156127c257858181518110151561272657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561278557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061270f565b5060008090505b845181101561287c5784818151811015156127e057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561283f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506127c9565b50819850505050505050505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156128cd57600080fd5b6128d6816117d4565b1515156128e257600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506129876001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b335760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000828211151515612b4757600080fd5b600082840390508091505092915050565b6000808284019050838110151515612b6f57600080fd5b8091505092915050565b612b838282612bb3565b612b8d8282612195565b60006006600083815260200190815260200160002081905550612baf81612d47565b5050565b8173ffffffffffffffffffffffffffffffffffffffff16612bd3826110b4565b73ffffffffffffffffffffffffffffffffffffffff16141515612bf557600080fd5b612bfe81612a76565b612c516001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000612d626001600780549050612b3690919063ffffffff16565b90506000600860008481526020019081526020016000205490506000600783815481101515612d8d57fe5b9060005260206000200154905080600783815481101515612daa57fe5b90600052602060002001819055508160086000838152602001908152602001600020819055506007805480919060019003612de59190612e85565b506000600860008681526020019081526020016000208190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612e4657803560ff1916838001178555612e74565b82800160010185558215612e74579182015b82811115612e73578235825591602001919060010190612e58565b5b509050612e819190612ef9565b5090565b815481835581811115612eac57818360005260206000209182019101612eab9190612ef9565b5b505050565b50805460018160011615610100020316600290046000825580601f10612ed75750612ef6565b601f016020900490600052602060002090810190612ef59190612ef9565b5b50565b612f1b91905b80821115612f17576000816000905550600101612eff565b5090565b9056fea165627a7a72305820f6b31d1e60dd6e45eb84a766d1172d63bdfa78f3c44315324725cc555d835d73002900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f4b696e67646f6d73204265796f6e64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024b42000000000000000000000000000000000000000000000000000000000000