60806040526000600a556000600b553480156200001b57600080fd5b506040518060400160405280600c81526020017f507265792045676f5665727300000000000000000000000000000000000000008152506040518060400160405280600481526020017f5072657900000000000000000000000000000000000000000000000000000000815250816003908162000099919062000966565b508060049081620000ab919062000966565b505050620000ce620000c26200012060201b60201c565b6200012860201b60201c565b6000600960146101000a81548160ff0219169083151502179055506200011a306200010e6064670de0b6b3a7640000620001ee60201b6200209b1760201c565b6200020660201b60201c565b62000cc7565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183620001fe919062000a7c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000278576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026f9062000b3e565b60405180910390fd5b6200028c600083836200037e60201b60201c565b8060026000828254620002a0919062000b60565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002f7919062000b60565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035e919062000bce565b60405180910390a36200037a60008383620003ee60201b60201c565b5050565b6200038e620003f360201b60201c565b15620003d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c89062000c3b565b60405180910390fd5b620003e98383836200040a60201b620020b11760201c565b505050565b505050565b6000600960149054906101000a900460ff16905090565b620004228383836200050360201b620021691760201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200047e5762000468826200050860201b60201c565b620004786200056b60201b60201c565b620004fe565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004da57620004c4836200050860201b60201c565b620004d46200056b60201b60201c565b620004fd565b620004eb836200050860201b60201c565b620004fc826200050860201b60201c565b5b5b505050565b505050565b62000568600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206200055c836200058f60201b60201c565b620005d760201b60201c565b50565b6200058d6006620005816200066360201b60201c565b620005d760201b60201c565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000620005e96200066d60201b60201c565b90508062000600846000016200068b60201b60201c565b10156200065e5782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000600254905090565b6000620006866008620006de60201b6200216e1760201c565b905090565b600080828054905003620006a35760009050620006d9565b8160018380549050620006b7919062000c5d565b81548110620006cb57620006ca62000c98565b5b906000526020600020015490505b919050565b600081600001549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200076e57607f821691505b60208210810362000784576200078362000726565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007af565b620007fa8683620007af565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000847620008416200083b8462000812565b6200081c565b62000812565b9050919050565b6000819050919050565b620008638362000826565b6200087b62000872826200084e565b848454620007bc565b825550505050565b600090565b6200089262000883565b6200089f81848462000858565b505050565b5b81811015620008c757620008bb60008262000888565b600181019050620008a5565b5050565b601f8211156200091657620008e0816200078a565b620008eb846200079f565b81016020851015620008fb578190505b620009136200090a856200079f565b830182620008a4565b50505b505050565b600082821c905092915050565b60006200093b600019846008026200091b565b1980831691505092915050565b600062000956838362000928565b9150826002028217905092915050565b6200097182620006ec565b67ffffffffffffffff8111156200098d576200098c620006f7565b5b62000999825462000755565b620009a6828285620008cb565b600060209050601f831160018114620009de5760008415620009c9578287015190505b620009d5858262000948565b86555062000a45565b601f198416620009ee866200078a565b60005b8281101562000a1857848901518255600182019150602085019450602081019050620009f1565b8683101562000a38578489015162000a34601f89168262000928565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a898262000812565b915062000a968362000812565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ad25762000ad162000a4d565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b26601f8362000add565b915062000b338262000aee565b602082019050919050565b6000602082019050818103600083015262000b598162000b17565b9050919050565b600062000b6d8262000812565b915062000b7a8362000812565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000bb25762000bb162000a4d565b5b828201905092915050565b62000bc88162000812565b82525050565b600060208201905062000be5600083018462000bbd565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600062000c2360108362000add565b915062000c308262000beb565b602082019050919050565b6000602082019050818103600083015262000c568162000c14565b9050919050565b600062000c6a8262000812565b915062000c778362000812565b92508282101562000c8d5762000c8c62000a4d565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b613f708062000cd76000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806395d89b4111610130578063ad7a672f116100b8578063e33fcf071161007c578063e33fcf071461065b578063eb46bc9714610677578063f2fde38b14610693578063f418e053146106af578063f4e0d9ac146106cd57610232565b8063ad7a672f146105b5578063bb49552a146105d3578063bec3fa17146105f1578063d89135cd1461060d578063dd62ed3e1461062b57610232565b80639e17e21d116100ff5780639e17e21d146104fd578063a2309ff81461051b578063a457c2d714610539578063a9059cbb14610569578063ab0eda9e1461059957610232565b806395d89b41146104895780639711715a146104a7578063981b24d0146104b15780639dc29fac146104e157610232565b80634c52e190116101be578063715018a611610182578063715018a61461041b5780638456cb59146104255780638da5cb5b1461042f57806393aa3f641461044d578063953fb4fb1461046b57610232565b80634c52e190146103655780634ee2cd7e146103815780635c975abb146103b157806370a08231146103cf578063711953ef146103ff57610232565b806323b872dd1161020557806323b872dd146102c1578063313ce567146102f1578063395093511461030f5780633f4ba83a1461033f57806340c10f191461034957610232565b806306fdde0314610237578063095ea7b31461025557806314661aa11461028557806318160ddd146102a3575b600080fd5b61023f6106e9565b60405161024c9190613043565b60405180910390f35b61026f600480360381019061026a91906130fe565b61077b565b60405161027c9190613159565b60405180910390f35b61028d61079e565b60405161029a9190613183565b60405180910390f35b6102ab6107c4565b6040516102b891906131ad565b60405180910390f35b6102db60048036038101906102d691906131c8565b6107ce565b6040516102e89190613159565b60405180910390f35b6102f96107fd565b6040516103069190613237565b60405180910390f35b610329600480360381019061032491906130fe565b610806565b6040516103369190613159565b60405180910390f35b61034761083d565b005b610363600480360381019061035e91906130fe565b6108c3565b005b61037f600480360381019061037a9190613252565b610de0565b005b61039b600480360381019061039691906130fe565b610f0f565b6040516103a891906131ad565b60405180910390f35b6103b9610f7f565b6040516103c69190613159565b60405180910390f35b6103e960048036038101906103e49190613252565b610f96565b6040516103f691906131ad565b60405180910390f35b61041960048036038101906104149190613252565b610fde565b005b61042361110d565b005b61042d611195565b005b61043761121b565b6040516104449190613183565b60405180910390f35b610455611245565b60405161046291906131ad565b60405180910390f35b610473611251565b6040516104809190613183565b60405180910390f35b610491611277565b60405161049e9190613043565b60405180910390f35b6104af611309565b005b6104cb60048036038101906104c6919061327f565b611390565b6040516104d891906131ad565b60405180910390f35b6104fb60048036038101906104f691906130fe565b6113c1565b005b610505611825565b6040516105129190613183565b60405180910390f35b61052361184b565b60405161053091906131ad565b60405180910390f35b610553600480360381019061054e91906130fe565b611851565b6040516105609190613159565b60405180910390f35b610583600480360381019061057e91906130fe565b6118c8565b6040516105909190613159565b60405180910390f35b6105b360048036038101906105ae9190613252565b6118eb565b005b6105bd611a1a565b6040516105ca91906131ad565b60405180910390f35b6105db611a2a565b6040516105e89190613183565b60405180910390f35b61060b600480360381019061060691906130fe565b611a50565b005b610615611b66565b60405161062291906131ad565b60405180910390f35b610645600480360381019061064091906132ac565b611b6c565b60405161065291906131ad565b60405180910390f35b61067560048036038101906106709190613252565b611bf3565b005b610691600480360381019061068c91906130fe565b611d22565b005b6106ad60048036038101906106a89190613252565b611e4f565b005b6106b7611f46565b6040516106c49190613183565b60405180910390f35b6106e760048036038101906106e29190613252565b611f6c565b005b6060600380546106f89061331b565b80601f01602080910402602001604051908101604052809291908181526020018280546107249061331b565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b60008061078661217c565b9050610793818585612184565b600191505092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806107d961217c565b90506107e685828561234d565b6107f18585856123d9565b60019150509392505050565b60006012905090565b60008061081161217c565b90506108328185856108238589611b6c565b61082d919061337b565b612184565b600191505092915050565b61084561217c565b73ffffffffffffffffffffffffffffffffffffffff1661086361121b565b73ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b09061341d565b60405180910390fd5b6108c1612658565b565b6108cb610f7f565b1561090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290613489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361097a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610971906134f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580610a275750600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80610a815750600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80610adb5750600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80610b355750600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b90613587565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb561217c565b73ffffffffffffffffffffffffffffffffffffffff161480610c2b5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1361217c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c8a5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7261217c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ce95750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd161217c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d485750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d3061217c565b73ffffffffffffffffffffffffffffffffffffffff16145b610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e906135f3565b60405180910390fd5b610d93600a54826126fa565b600a81905550610da38282612710565b7f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8282604051610dd4929190613613565b60405180910390a15050565b610de861217c565b73ffffffffffffffffffffffffffffffffffffffff16610e0661121b565b73ffffffffffffffffffffffffffffffffffffffff1614610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e539061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec2906134f5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000610f5c84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061286f565b9150915081610f7357610f6e85610f96565b610f75565b805b9250505092915050565b6000600960149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fe661217c565b73ffffffffffffffffffffffffffffffffffffffff1661100461121b565b73ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110519061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c0906134f5565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61111561217c565b73ffffffffffffffffffffffffffffffffffffffff1661113361121b565b73ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111809061341d565b60405180910390fd5b6111936000612964565b565b61119d61217c565b73ffffffffffffffffffffffffffffffffffffffff166111bb61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611211576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112089061341d565b60405180910390fd5b611219612a2a565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b670de0b6b3a764000081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546112869061331b565b80601f01602080910402602001604051908101604052809291908181526020018280546112b29061331b565b80156112ff5780601f106112d4576101008083540402835291602001916112ff565b820191906000526020600020905b8154815290600101906020018083116112e257829003601f168201915b5050505050905090565b61131161217c565b73ffffffffffffffffffffffffffffffffffffffff1661132f61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c9061341d565b60405180910390fd5b61138d612acd565b50565b60008060006113a084600661286f565b91509150816113b6576113b16107c4565b6113b8565b805b92505050919050565b6113c9610f7f565b15611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090613489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f906134f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806115255750600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8061157f5750600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b806115d95750600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90613587565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661165961217c565b73ffffffffffffffffffffffffffffffffffffffff1614806116cf5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116b761217c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061172e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661171661217c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061178d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661177561217c565b73ffffffffffffffffffffffffffffffffffffffff16145b6117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c3906135f3565b60405180910390fd5b6117d8600b54826126fa565b600b819055506117e88282612b23565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051611819929190613613565b60405180910390a15050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008061185c61217c565b9050600061186a8286611b6c565b9050838110156118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a6906136ae565b60405180910390fd5b6118bc8286868403612184565b60019250505092915050565b6000806118d361217c565b90506118e08185856123d9565b600191505092915050565b6118f361217c565b73ffffffffffffffffffffffffffffffffffffffff1661191161121b565b73ffffffffffffffffffffffffffffffffffffffff1614611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e9061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cd906134f5565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611a2530610f96565b905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a5861217c565b73ffffffffffffffffffffffffffffffffffffffff16611a7661121b565b73ffffffffffffffffffffffffffffffffffffffff1614611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac39061341d565b60405180910390fd5b611ad4611a1a565b811115611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061371a565b60405180910390fd5b6000309050611b268184846123d9565b7ffda3a3e0e1479b43cb1c701f7576187f4c4ad80768d627387e00184302f7d88e338484604051611b599392919061373a565b60405180910390a1505050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bfb61217c565b73ffffffffffffffffffffffffffffffffffffffff16611c1961121b565b73ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c669061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134f5565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d2a61217c565b73ffffffffffffffffffffffffffffffffffffffff16611d4861121b565b73ffffffffffffffffffffffffffffffffffffffff1614611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d959061341d565b60405180910390fd5b611da6611a1a565b811115611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf9061371a565b60405180910390fd5b60003090506000611e0183670de0b6b3a764000061209b565b9050611e0e8285836123d9565b7ffda3a3e0e1479b43cb1c701f7576187f4c4ad80768d627387e00184302f7d88e338583604051611e419392919061373a565b60405180910390a150505050565b611e5761217c565b73ffffffffffffffffffffffffffffffffffffffff16611e7561121b565b73ffffffffffffffffffffffffffffffffffffffff1614611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f31906137e3565b60405180910390fd5b611f4381612964565b50565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f7461217c565b73ffffffffffffffffffffffffffffffffffffffff16611f9261121b565b73ffffffffffffffffffffffffffffffffffffffff1614611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf9061341d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e906134f5565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836120a99190613803565b905092915050565b6120bc838383612169565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612106576120f982612cf9565b612101612d4c565b612164565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121505761214383612cf9565b61214b612d4c565b612163565b61215983612cf9565b61216282612cf9565b5b5b505050565b505050565b600081600001549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea906138cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990613961565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161234091906131ad565b60405180910390a3505050565b60006123598484611b6c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146123d357818110156123c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bc906139cd565b60405180910390fd5b6123d28484848403612184565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243f90613a5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae90613af1565b60405180910390fd5b6124c2838383612d60565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f90613b83565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125db919061337b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263f91906131ad565b60405180910390a3612652848484612db8565b50505050565b612660610f7f565b61269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269690613bef565b60405180910390fd5b6000600960146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6126e361217c565b6040516126f09190613183565b60405180910390a1565b60008183612708919061337b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361277f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277690613c5b565b60405180910390fd5b61278b60008383612d60565b806002600082825461279d919061337b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127f2919061337b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161285791906131ad565b60405180910390a361286b60008383612db8565b5050565b600080600084116128b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ac90613cc7565b60405180910390fd5b6128bd612dbd565b8411156128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690613d33565b60405180910390fd5b60006129178585600001612dce90919063ffffffff16565b90508360000180549050810361293457600080925092505061295d565b600184600101828154811061294c5761294b613d53565b5b906000526020600020015492509250505b9250929050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a32610f7f565b15612a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6990613489565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ab661217c565b604051612ac39190613183565b60405180910390a1565b6000612ad96008612ea7565b6000612ae3612dbd565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051612b1491906131ad565b60405180910390a18091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8990613df4565b60405180910390fd5b612b9e82600083612d60565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1b90613e86565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612c7b9190613ea6565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ce091906131ad565b60405180910390a3612cf483600084612db8565b505050565b612d49600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612d4483610f96565b612ebd565b50565b612d5e6006612d596107c4565b612ebd565b565b612d68610f7f565b15612da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9f90613489565b60405180910390fd5b612db38383836120b1565b505050565b505050565b6000612dc9600861216e565b905090565b600080838054905003612de45760009050612ea1565b600080848054905090505b80821015612e48576000612e038383612f38565b905084868281548110612e1957612e18613d53565b5b90600052602060002001541115612e3257809150612e42565b600181612e3f919061337b565b92505b50612def565b600082118015612e8057508385600184612e629190613ea6565b81548110612e7357612e72613d53565b5b9060005260206000200154145b15612e9b57600182612e929190613ea6565b92505050612ea1565b81925050505b92915050565b6001816000016000828254019250508190555050565b6000612ec7612dbd565b905080612ed684600001612f5e565b1015612f335782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b60006002828418612f499190613f09565b828416612f56919061337b565b905092915050565b600080828054905003612f745760009050612fa5565b8160018380549050612f869190613ea6565b81548110612f9757612f96613d53565b5b906000526020600020015490505b919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fe4578082015181840152602081019050612fc9565b83811115612ff3576000848401525b50505050565b6000601f19601f8301169050919050565b600061301582612faa565b61301f8185612fb5565b935061302f818560208601612fc6565b61303881612ff9565b840191505092915050565b6000602082019050818103600083015261305d818461300a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130958261306a565b9050919050565b6130a58161308a565b81146130b057600080fd5b50565b6000813590506130c28161309c565b92915050565b6000819050919050565b6130db816130c8565b81146130e657600080fd5b50565b6000813590506130f8816130d2565b92915050565b6000806040838503121561311557613114613065565b5b6000613123858286016130b3565b9250506020613134858286016130e9565b9150509250929050565b60008115159050919050565b6131538161313e565b82525050565b600060208201905061316e600083018461314a565b92915050565b61317d8161308a565b82525050565b60006020820190506131986000830184613174565b92915050565b6131a7816130c8565b82525050565b60006020820190506131c2600083018461319e565b92915050565b6000806000606084860312156131e1576131e0613065565b5b60006131ef868287016130b3565b9350506020613200868287016130b3565b9250506040613211868287016130e9565b9150509250925092565b600060ff82169050919050565b6132318161321b565b82525050565b600060208201905061324c6000830184613228565b92915050565b60006020828403121561326857613267613065565b5b6000613276848285016130b3565b91505092915050565b60006020828403121561329557613294613065565b5b60006132a3848285016130e9565b91505092915050565b600080604083850312156132c3576132c2613065565b5b60006132d1858286016130b3565b92505060206132e2858286016130b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333357607f821691505b602082108103613346576133456132ec565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613386826130c8565b9150613391836130c8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133c6576133c561334c565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613407602083612fb5565b9150613412826133d1565b602082019050919050565b60006020820190508181036000830152613436816133fa565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613473601083612fb5565b915061347e8261343d565b602082019050919050565b600060208201905081810360008301526134a281613466565b9050919050565b7f61646472657373206973206e6f7420636f727265637400000000000000000000600082015250565b60006134df601683612fb5565b91506134ea826134a9565b602082019050919050565b6000602082019050818103600083015261350e816134d2565b9050919050565b7f636f6e74726163747320616464726573736573206973206e6f7420736574206f60008201527f72206e6f7420636f727265637400000000000000000000000000000000000000602082015250565b6000613571602d83612fb5565b915061357c82613515565b604082019050919050565b600060208201905081810360008301526135a081613564565b9050919050565b7f73656e64657220646f6573206e6f742068617665207065726d697373696f6e00600082015250565b60006135dd601f83612fb5565b91506135e8826135a7565b602082019050919050565b6000602082019050818103600083015261360c816135d0565b9050919050565b60006040820190506136286000830185613174565b613635602083018461319e565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613698602583612fb5565b91506136a38261363c565b604082019050919050565b600060208201905081810360008301526136c78161368b565b9050919050565b7f7472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b6000613704601f83612fb5565b915061370f826136ce565b602082019050919050565b60006020820190508181036000830152613733816136f7565b9050919050565b600060608201905061374f6000830186613174565b61375c6020830185613174565b613769604083018461319e565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137cd602683612fb5565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b600061380e826130c8565b9150613819836130c8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138525761385161334c565b5b828202905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138b9602483612fb5565b91506138c48261385d565b604082019050919050565b600060208201905081810360008301526138e8816138ac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061394b602283612fb5565b9150613956826138ef565b604082019050919050565b6000602082019050818103600083015261397a8161393e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006139b7601d83612fb5565b91506139c282613981565b602082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a49602583612fb5565b9150613a54826139ed565b604082019050919050565b60006020820190508181036000830152613a7881613a3c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613adb602383612fb5565b9150613ae682613a7f565b604082019050919050565b60006020820190508181036000830152613b0a81613ace565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b6d602683612fb5565b9150613b7882613b11565b604082019050919050565b60006020820190508181036000830152613b9c81613b60565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613bd9601483612fb5565b9150613be482613ba3565b602082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613c45601f83612fb5565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b6000613cb1601683612fb5565b9150613cbc82613c7b565b602082019050919050565b60006020820190508181036000830152613ce081613ca4565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b6000613d1d601d83612fb5565b9150613d2882613ce7565b602082019050919050565b60006020820190508181036000830152613d4c81613d10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dde602183612fb5565b9150613de982613d82565b604082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e70602283612fb5565b9150613e7b82613e14565b604082019050919050565b60006020820190508181036000830152613e9f81613e63565b9050919050565b6000613eb1826130c8565b9150613ebc836130c8565b925082821015613ecf57613ece61334c565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f14826130c8565b9150613f1f836130c8565b925082613f2f57613f2e613eda565b5b82820490509291505056fea2646970667358221220a019453b0b72391be505f00b3f5d6324df9aed078a3a7127e01f3f22eb7603e464736f6c634300080f0033