From d7e4c1c533e7292c1b5ac74221c81c371b77c155 Mon Sep 17 00:00:00 2001 From: Will O'Beirne Date: Fri, 16 Nov 2018 18:05:17 -0500 Subject: [PATCH] Check in user refactor. Incomplete, but computer is crashing routinely. --- backend/grant/user/models.py | 17 +- backend/grant/user/views.py | 28 +- backend/grant/utils/social.py | 19 + contract/build/contracts/CrowdFund.json | 6674 ++++++++--------- .../build/contracts/CrowdFundFactory.json | 406 +- frontend/client/api/api.ts | 50 +- .../client/components/AuthFlow/SignIn.tsx | 15 +- .../client/components/CreateFlow/Review.tsx | 2 +- .../client/components/CreateFlow/Team.tsx | 29 +- .../components/CreateFlow/TeamMember.tsx | 13 +- .../client/components/Profile/ProfileEdit.tsx | 92 +- .../components/Profile/ProfileInvite.tsx | 6 +- .../components/Profile/ProfileProposal.tsx | 2 +- .../client/components/Profile/ProfileUser.tsx | 39 +- frontend/client/components/Profile/index.tsx | 23 +- .../components/Proposal/TeamBlock/index.tsx | 2 +- .../Proposals/ProposalCard/index.tsx | 3 +- frontend/client/components/UserAvatar.tsx | 12 +- frontend/client/components/UserRow/index.tsx | 8 +- frontend/client/modules/auth/reducers.ts | 10 +- frontend/client/modules/create/utils.ts | 11 +- frontend/client/modules/users/actions.ts | 4 +- frontend/client/modules/users/reducers.ts | 21 +- frontend/client/pages/settings.tsx | 2 +- frontend/client/utils/api.ts | 30 +- frontend/client/utils/social.tsx | 48 +- frontend/stories/UserRow.story.tsx | 31 +- frontend/stories/props.tsx | 28 +- frontend/types/proposal.ts | 8 +- frontend/types/social.ts | 11 +- frontend/types/user.ts | 22 +- 31 files changed, 3790 insertions(+), 3876 deletions(-) create mode 100644 backend/grant/utils/social.py diff --git a/backend/grant/user/models.py b/backend/grant/user/models.py index 59c4bea3..961158d0 100644 --- a/backend/grant/user/models.py +++ b/backend/grant/user/models.py @@ -3,6 +3,7 @@ from grant.comment.models import Comment from grant.email.models import EmailVerification from grant.extensions import ma, db from grant.utils.misc import make_url +from grant.utils.social import get_social_info_from_url from grant.email.send import send_email @@ -122,7 +123,21 @@ class SocialMediaSchema(ma.Schema): class Meta: model = SocialMedia # Fields to expose - fields = ("social_media_link",) + fields = ( + "service", + "username", + ) + + service = ma.Method("get_service") + username = ma.Method("get_username") + + def get_service(self, obj): + info = get_social_info_from_url(obj.social_media_link) + return info['service'] + + def get_username(self, obj): + info = get_social_info_from_url(obj.social_media_link) + return info['username'] social_media_schema = SocialMediaSchema() diff --git a/backend/grant/user/views.py b/backend/grant/user/views.py index f74a8e0f..76e9ac3d 100644 --- a/backend/grant/user/views.py +++ b/backend/grant/user/views.py @@ -39,9 +39,13 @@ def get_me(): @blueprint.route("/", methods=["GET"]) @endpoint.api() def get_user(user_identity): + print('get by ident') user = User.get_by_identifier(email_address=user_identity, account_address=user_identity) + print(user) if user: + print('dumping') result = user_schema.dump(user) + print(result) return result else: message = "User with account_address or user_identity matching {} not found".format(user_identity) @@ -126,7 +130,7 @@ def auth_user(account_address, signed_message, raw_typed_data): parameter('displayName', type=str, required=True), parameter('title', type=str, required=True), parameter('socialMedias', type=list, required=True), - parameter('avatar', type=dict, required=True) + parameter('avatar', type=str, required=True) ) def update_user(user_identity, display_name, title, social_medias, avatar): user = g.current_user @@ -137,22 +141,20 @@ def update_user(user_identity, display_name, title, social_medias, avatar): if title is not None: user.title = title + db_socials = SocialMedia.query.filter_by(user_id=user.id).all() + for db_social in db_socials: + db.session.delete(db_social) if social_medias is not None: - SocialMedia.query.filter_by(user_id=user.id).delete() for social_media in social_medias: - sm = SocialMedia(social_media_link=social_media.get("link"), user_id=user.id) + sm = SocialMedia(social_media_link=social_media, user_id=user.id) db.session.add(sm) - else: - SocialMedia.query.filter_by(user_id=user.id).delete() - if avatar is not None: - Avatar.query.filter_by(user_id=user.id).delete() - avatar_link = avatar.get('link') - if avatar_link: - avatar_obj = Avatar(image_url=avatar_link, user_id=user.id) - db.session.add(avatar_obj) - else: - Avatar.query.filter_by(user_id=user.id).delete() + db_avatar = Avatar.query.filter_by(user_id=user.id).first() + if db_avatar: + db.session.delete(db_avatar) + if avatar: + new_avatar = Avatar(image_url=avatar, user_id=user.id) + db.session.add(new_avatar) db.session.commit() result = user_schema.dump(user) diff --git a/backend/grant/utils/social.py b/backend/grant/utils/social.py new file mode 100644 index 00000000..ab05ceb3 --- /dev/null +++ b/backend/grant/utils/social.py @@ -0,0 +1,19 @@ +import re + +username_regex = '([a-zA-Z0-9-_]*)' + +social_patterns = { + 'GITHUB': 'https://github.com/{}'.format(username_regex), + 'TWITTER': 'https://twitter.com/{}'.format(username_regex), + 'LINKEDIN': 'https://linkedin.com/in/{}'.format(username_regex), + 'KEYBASE': 'https://keybase.io/{}'.format(username_regex), +} + +def get_social_info_from_url(url: str): + for service, pattern in social_patterns.items(): + match = re.match(pattern, url) + if match: + return { + 'service': service, + 'username': match.group(1), + } diff --git a/contract/build/contracts/CrowdFund.json b/contract/build/contracts/CrowdFund.json index 86613203..023b2d15 100644 --- a/contract/build/contracts/CrowdFund.json +++ b/contract/build/contracts/CrowdFund.json @@ -525,20 +525,20 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620032ee380380620032ee833981018060405281019080805190602001909291908051906020019092919080518201929190602001805182019291906020018051906020019092919080519060200190929190805190602001909291905050506000806000670de0b6b3a76400008a1015151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526169736520676f616c20697320736d616c6c6572207468616e20312065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001885110158015620001365750600a885111155b1515620001d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5472757374656520616464726573736573206d757374206265206174206c656181526020017f7374203120616e64206e6f74206d6f7265207468616e2031300000000000000081525060400191505060405180910390fd5b6001875110158015620001e65750600a875111155b151562000281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d696c6573746f6e6573206d757374206265206174206c65617374203120616e81526020017f64206e6f74206d6f7265207468616e203130000000000000000000000000000081525060400191505060405180910390fd5b60009250600091505b865182101562000416578682815181101515620002a357fe5b9060200190602002015190506000811115156200034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f4d696c6573746f6e6520616d6f756e74206d757374206265206772656174657281526020017f207468616e20300000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6200037181846200059b6401000000000262002ae5179091906401000000009004565b9250600c6080604051908101604052808381526020016000815260200160008152602001600015158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050505081806001019250506200028a565b8983141515620004b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d696c6573746f6e6520746f74616c206d75737420657175616c20726169736581526020017f20676f616c00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60016006819055508960038190555088600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b90805190602001906200051c929190620005b8565b508542016002819055508460018190555083600060036101000a81548160ff02191690831515021790555060008060026101000a81548160ff021916908315150217905550600060078190555060008060016101000a81548160ff0219169083151502179055506000600481905550505050505050505050506200068d565b60008183019050828110151515620005af57fe5b80905092915050565b82805482825590600052602060002090810192821562000634579160200282015b82811115620006335782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005d9565b5b50905062000643919062000647565b5090565b6200068a91905b808211156200068657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200064e565b5090565b90565b612c51806200069d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e6f565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e9b565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebc565b005b34801561041557600080fd5b5061041e611231565b005b34801561042c57600080fd5b5061044d600480360381019080803515159060200190929190505050611445565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061182a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611868565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118b4565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ba565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3d565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611bb6565b005b3480156105f357600080fd5b506105fc61206b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612071565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061244a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c1612488565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec61248e565b6040518082815260200191505060405180910390f35b61070a6124af565b005b34801561071857600080fd5b50610721612a34565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a47565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a5a565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612aa6565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612acc90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e67565b8415610e6657610e41600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e2157fe5b906000526020600020906004020160010154612ae590919063ffffffff16565b600c87815481101515610e5057fe5b9060005260206000209060040201600101819055505b5b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610eb4600284612b0190919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491506111946005546111863073ffffffffffffffffffffffffffffffffffffffff163185612b0190919063ffffffff16565b612b3990919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111dc573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112c2610850565b92506112cc612aa6565b91506112d9600754610e9b565b905082806112e45750815b806112ec5750805b1515611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113b45760008060006101000a81548160ff021916908360028111156113aa57fe5b0217905550611407565b81156113e25760016000806101000a81548160ff021916908360028111156113d857fe5b0217905550611406565b60026000806101000a81548160ff0219169083600281111561140057fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515611501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615151561160a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117c1576117b6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612acc90919063ffffffff16565b600781905550611826565b81156118255761181e600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ae590919063ffffffff16565b6007819055505b5b5050565b600b8181548110151561183957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118c5610850565b1515611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611b0257600a828154811015156119de57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119c2565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8e57fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bc6610850565b1515611c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d5257fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d8357fe5b906000526020600020906004020160020154119350611dc1600c87815481101515611daa57fe5b906000526020600020906004020160010154610e9b565b925084151515611e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611eb257600c81815481101515611e7d57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611ea5578091505b8080600101915050611e61565b6001820186141515611f52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f6357fe5b906000526020600020906004020160020154141561200657600086148015611f975750600060039054906101000a900460ff165b15611fc7576001600c87815481101515611fad57fe5b906000526020600020906004020160020181905550612001565b611fdc60015442612ae590919063ffffffff16565b600c87815481101515611feb57fe5b9060005260206000209060040201600201819055505b612063565b8380156120105750825b156120625761203d61202e6002600154612b0190919063ffffffff16565b42612ae590919063ffffffff16565b600c8781548110151561204c57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561219057fe5b9060005260206000209060040201600201541093506121ce600c868154811015156121b757fe5b906000526020600020906004020160010154610e9b565b9250600c858154811015156121df57fe5b906000526020600020906004020160030160009054906101000a900460ff16915083801561220b575082155b8015612215575081155b156123af576001600c8681548110151561222b57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561226257fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122de573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161236986600c80549050612acc90919063ffffffff16565b14156123aa57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612443565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561245957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff1660028111156124aa57fe5b905090565b600080600060025442111580156124d35750600060029054906101000a900460ff16155b1515612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125e134600454612ae590919063ffffffff16565b92506003548311151515612683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061269b5750805b151561275b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561291657608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127ec5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612867929190612b4f565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129b2565b61296b34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ae590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129e1576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a6957fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ac75750600060029054906101000a900460ff16155b905090565b6000828211151515612ada57fe5b818303905092915050565b60008183019050828110151515612af857fe5b80905092915050565b600080831415612b145760009050612b33565b8183029050818382811515612b2557fe5b04141515612b2f57fe5b8090505b92915050565b60008183811515612b4657fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612be45791602002820160005b83821115612bb557835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b78565b8015612be25782816101000a81549060ff0219169055600101602081600001049283019260010302612bb5565b505b509050612bf19190612bf5565b5090565b612c2291905b80821115612c1e57600081816101000a81549060ff021916905550600101612bfb565b5090565b905600a165627a7a72305820b725d6ed533ba3c21fcb343e8c393171f8c562c1668224983554c10c88ce87060029", - "deployedBytecode": "0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e6f565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e9b565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebc565b005b34801561041557600080fd5b5061041e611231565b005b34801561042c57600080fd5b5061044d600480360381019080803515159060200190929190505050611445565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061182a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611868565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118b4565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ba565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3d565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611bb6565b005b3480156105f357600080fd5b506105fc61206b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612071565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061244a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c1612488565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec61248e565b6040518082815260200191505060405180910390f35b61070a6124af565b005b34801561071857600080fd5b50610721612a34565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a47565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a5a565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612aa6565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612acc90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e67565b8415610e6657610e41600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e2157fe5b906000526020600020906004020160010154612ae590919063ffffffff16565b600c87815481101515610e5057fe5b9060005260206000209060040201600101819055505b5b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610eb4600284612b0190919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491506111946005546111863073ffffffffffffffffffffffffffffffffffffffff163185612b0190919063ffffffff16565b612b3990919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111dc573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112c2610850565b92506112cc612aa6565b91506112d9600754610e9b565b905082806112e45750815b806112ec5750805b1515611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113b45760008060006101000a81548160ff021916908360028111156113aa57fe5b0217905550611407565b81156113e25760016000806101000a81548160ff021916908360028111156113d857fe5b0217905550611406565b60026000806101000a81548160ff0219169083600281111561140057fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515611501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615151561160a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117c1576117b6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612acc90919063ffffffff16565b600781905550611826565b81156118255761181e600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ae590919063ffffffff16565b6007819055505b5b5050565b600b8181548110151561183957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118c5610850565b1515611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611b0257600a828154811015156119de57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119c2565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8e57fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bc6610850565b1515611c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d5257fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d8357fe5b906000526020600020906004020160020154119350611dc1600c87815481101515611daa57fe5b906000526020600020906004020160010154610e9b565b925084151515611e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611eb257600c81815481101515611e7d57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611ea5578091505b8080600101915050611e61565b6001820186141515611f52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f6357fe5b906000526020600020906004020160020154141561200657600086148015611f975750600060039054906101000a900460ff165b15611fc7576001600c87815481101515611fad57fe5b906000526020600020906004020160020181905550612001565b611fdc60015442612ae590919063ffffffff16565b600c87815481101515611feb57fe5b9060005260206000209060040201600201819055505b612063565b8380156120105750825b156120625761203d61202e6002600154612b0190919063ffffffff16565b42612ae590919063ffffffff16565b600c8781548110151561204c57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561219057fe5b9060005260206000209060040201600201541093506121ce600c868154811015156121b757fe5b906000526020600020906004020160010154610e9b565b9250600c858154811015156121df57fe5b906000526020600020906004020160030160009054906101000a900460ff16915083801561220b575082155b8015612215575081155b156123af576001600c8681548110151561222b57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561226257fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122de573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161236986600c80549050612acc90919063ffffffff16565b14156123aa57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612443565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561245957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff1660028111156124aa57fe5b905090565b600080600060025442111580156124d35750600060029054906101000a900460ff16155b1515612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125e134600454612ae590919063ffffffff16565b92506003548311151515612683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061269b5750805b151561275b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561291657608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127ec5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612867929190612b4f565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129b2565b61296b34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ae590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129e1576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a6957fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ac75750600060029054906101000a900460ff16155b905090565b6000828211151515612ada57fe5b818303905092915050565b60008183019050828110151515612af857fe5b80905092915050565b600080831415612b145760009050612b33565b8183029050818382811515612b2557fe5b04141515612b2f57fe5b8090505b92915050565b60008183811515612b4657fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612be45791602002820160005b83821115612bb557835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b78565b8015612be25782816101000a81549060ff0219169055600101602081600001049283019260010302612bb5565b505b509050612bf19190612bf5565b5090565b612c2291905b80821115612c1e57600081816101000a81549060ff021916905550600101612bfb565b5090565b905600a165627a7a72305820b725d6ed533ba3c21fcb343e8c393171f8c562c1668224983554c10c88ce87060029", - "sourceMap": "87:12715:0:-;;;1437:1931;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:1931:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2194:19;2232:6;2287:20;1711:7;1697:10;:21;;1689:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1;1775:9;:16;:21;;:47;;;;;1820:2;1800:9;:16;:22;;1775:47;1767:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1924:1;1902:11;:18;:23;;:51;;;;;1951:2;1929:11;:18;:24;;1902:51;1894:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2216:1;2194:23;;2241:1;2232:10;;2227:477;2248:11;:18;2244:1;:22;2227:477;;;2310:11;2322:1;2310:14;;;;;;;;;;;;;;;;;;2287:37;;2364:1;2346:15;:19;2338:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2440:35;2459:15;2440:14;:18;;;;;;:35;;;;;:::i;:::-;2423:52;;2489:10;2505:187;;;;;;;;;2541:15;2505:187;;;;2647:1;2505:187;;;;2601:1;2505:187;;;;2672:5;2505:187;;;;;2489:204;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2489:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2268:3;;;;;;;2227:477;;;2739:10;2721:14;:28;2713:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2906:1;2878:25;:29;;;;2929:10;2917:9;:22;;;;2963:12;2949:11;;:26;;;;;;;;;;;;;;;;;;2996:9;2985:8;:20;;;;;;;;;;;;:::i;:::-;;3032:9;3026:3;:15;3015:8;:26;;;;3075:22;3051:21;:46;;;;3139:30;3107:29;;:62;;;;;;;;;;;;;;;;;;3200:5;3179:18;;:26;;;;;;;;;;;;;;;;;;3239:1;3215:21;:25;;;;3259:5;3250:6;;:14;;;;;;;;;;;;;;;;;;3360:1;3345:12;:16;;;;1437:1931;;;;;;;;;;87:12715;;1238:128:2;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;87:12715:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "87:12715:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;776:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;776:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1079:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:33:0;;;;;;;;;;;;;;;;;;;;;;;1150:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11263:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11263:234:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1005:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1005:25:0;;;;;;;;;;;;;;;;;;;;;;;922:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;922:20:0;;;;;;;;;;;;;;;;;;;;;;;6712:1039;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6712:1039:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1036:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:37:0;;;;;;;;;;;;;;;;;;;;;;;1118:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1118:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11129:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11129:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10068:587;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10068:587:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9299:693;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9299:693:0;;;;;;8724:569;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8724:569:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1302:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11827:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11827:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;975:24:0;;;;;;;;;;;;;;;;;;;;;;;10752:371;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10752:371:0;;;;;;11618:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11618:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5068:1638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5068:1638:0;;;;;;;;;;;;;;;;;;;;;;;;;;883:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;883:33:0;;;;;;;;;;;;;;;;;;;;;;;7757:961;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7757:961:0;;;;;;;;;;;;;;;;;;;;;;;;;;1207:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1207:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:21:0;;;;;;;;;;;;;;;;;;;;;;;12005:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12005:96:0;;;;;;;;;;;;;;;;;;;;;;;3374:1688;;;;;;800:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;800:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;836:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;836:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1401:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1401:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11503:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11503:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;776:18;;;;;;;;;;;;;:::o;1079:33::-;;;;:::o;1150:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11263:234::-;11311:4;11332:6;11341:1;11332:10;;11327:142;11348:8;:15;;;;11344:1;:19;11327:142;;;11402:8;11411:1;11402:11;;;;;;;;;;;;;;;;;;;;;;;;;;;11388:25;;:10;:25;;;11384:75;;;11440:4;11433:11;;;;11384:75;11365:3;;;;;;;11327:142;;;11485:5;11478:12;;11263:234;;;:::o;1005:25::-;;;;:::o;922:20::-;;;;:::o;6712:1039::-;6821:28;7017:27;7104:23;7190:16;12638:1;12591:12;:24;12604:10;12591:24;;;;;;;;;;;;;;;:43;;;:48;;12583:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12342:18;;;;;;;;;;;12334:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:6;;;;;;;;;;;12247:7;12239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6852:12;:24;6865:10;6852:24;;;;;;;;;;;;;;;:41;;6894:5;6852:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6821:79;;6945:4;6918:31;;:23;:31;;;;6910:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:1;7047:10;7058:5;7047:17;;;;;;;;;;;;;;;;;;;;:43;;;:47;7017:77;;7177:3;7130:10;7141:5;7130:17;;;;;;;;;;;;;;;;;;;;:43;;;:50;;7104:76;;7209:22;:45;;;;;7236:18;7235:19;7209:45;7190:64;;7272:11;7264:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7378:4;7327:12;:24;7340:10;7327:24;;;;;;;;;;;;;;;:41;;7369:5;7327:48;;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;7397:4;7396:5;7392:353;;;7463:92;7511:12;:24;7524:10;7511:24;;;;;;;;;;;;;;;:43;;;7463:10;7474:5;7463:17;;;;;;;;;;;;;;;;;;;;:43;;;:47;;:92;;;;:::i;:::-;7417:10;7428:5;7417:17;;;;;;;;;;;;;;;;;;;;:43;;:138;;;;7392:353;;;7576:4;7572:173;;;7642:92;7690:12;:24;7703:10;7690:24;;;;;;;;;;;;;;;:43;;;7642:10;7653:5;7642:17;;;;;;;;;;;;;;;;;;;;:43;;;:47;;:92;;;;:::i;:::-;7596:10;7607:5;7596:17;;;;;;;;;;;;;;;;;;;;:43;;:138;;;;7572:173;7392:353;6712:1039;;;;;;:::o;1036:37::-;;;;:::o;1118:26::-;;;;;;;;;;;;;:::o;11129:128::-;11194:4;11238:12;;11217:18;11233:1;11217:11;:15;;:18;;;;:::i;:::-;:33;11210:40;;11129:128;;;:::o;10068:587::-;10189:15;10377:23;10459:19;12147:6;;;;;;;;;;;12139:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10145:6;;;;;;;;;;;10137:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10207:12;:27;10220:13;10207:27;;;;;;;;;;;;;;;:36;;;;;;;;;;;;10189:54;;10262:10;10261:11;10253:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10363:4;10324:12;:27;10337:13;10324:27;;;;;;;;;;;;;;;:36;;;:43;;;;;;;;;;;;;;;;;;10403:12;:27;10416:13;10403:27;;;;;;;;;;;;;;;:46;;;10377:72;;10481:64;10531:13;;10481:45;10512:4;10504:21;;;10481:18;:22;;:45;;;;:::i;:::-;:49;;:64;;;;:::i;:::-;10459:86;;10555:13;:22;;:38;10578:14;10555:38;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10555:38:0;10618:13;10608:40;;;10633:14;10608:40;;;;;;;;;;;;;;;;;;10068:587;;;;:::o;9299:693::-;9347:20;9397;9440:27;12248:6;;;;;;;;;;;12247:7;12239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9370:17;:15;:17::i;:::-;9347:40;;9420:10;:8;:10::i;:::-;9397:33;;9470:39;9487:21;;9470:16;:39::i;:::-;9440:69;;9527:15;:34;;;;9546:15;9527:34;:60;;;;9565:22;9527:60;9519:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9648:15;9644:272;;;9694:30;9679:12;;:45;;;;;;;;;;;;;;;;;;;;;;;;9644:272;;;9745:15;9741:175;;;9791:30;9776:12;;:45;;;;;;;;;;;;;;;;;;;;;;;;9741:175;;;9867:38;9852:12;;:53;;;;;;;;;;;;;;;;;;;;;;;;9741:175;9644:272;9934:4;9925:6;;:13;;;;;;;;;;;;;;;;;;9972:4;9964:21;;;9948:13;:37;;;;9299:693;;;:::o;8724:569::-;8812:15;12638:1;12591:12;:24;12604:10;12591:24;;;;;;;;;;;;;;;:43;;;:48;;12583:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12342:18;;;;;;;;;;;12334:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:6;;;;;;;;;;;12247:7;12239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8830:12;:24;8843:10;8830:24;;;;;;;;;;;;;;;:35;;;;;;;;;;;;8812:53;;8891:10;8883:18;;:4;:18;;;;8875:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9000:4;8962:12;:24;8975:10;8962:24;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;9019:4;9018:5;9014:273;;;9063:70;9089:12;:24;9102:10;9089:24;;;;;;;;;;;;;;;:43;;;9063:21;;:25;;:70;;;;:::i;:::-;9039:21;:94;;;;9014:273;;;9162:4;9158:129;;;9206:70;9232:12;:24;9245:10;9232:24;;;;;;;;;;;;;;;:43;;;9206:21;;:25;;:70;;;;:::i;:::-;9182:21;:94;;;;9158:129;9014:273;8724:569;;:::o;1302:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11827:172::-;11918:4;11941:12;:32;11954:18;11941:32;;;;;;;;;;;;;;;:51;;;11934:58;;11827:172;;;:::o;975:24::-;;;;:::o;10752:371::-;10816:6;10875:26;12736:17;:15;:17::i;:::-;12728:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12147:6;;;;;;;;;;;12139:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10825:1;10816:10;;10811:271;10832:15;:22;;;;10828:1;:26;10811:271;;;10904:15;10920:1;10904:18;;;;;;;;;;;;;;;;;;;;;;;;;;;10875:47;;10941:12;:32;10954:18;10941:32;;;;;;;;;;;;;;;:41;;;;;;;;;;;;10940:42;10936:136;;;11002:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10936:136;10856:3;;;;;;;10811:271;;;11104:11;;;;;;;;;;;11091:25;;;11618:203;11725:4;11749:12;:32;11762:18;11749:32;;;;;;;;;;;;;;;:49;;11799:14;11749:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11742:72;;11618:203;;;;:::o;5068:1638::-;5166:25;5226:26;5314;5527:19;5566:6;12736:17;:15;:17::i;:::-;12728:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12342:18;;;;;;;;;;;12334:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:6;;;;;;;;;;;12247:7;12239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5194:10;5205:5;5194:17;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;5166:50;;5301:3;5255:10;5266:5;5255:17;;;;;;;;;;;;;;;;;;;;:43;;;:49;5226:78;;5343:61;5360:10;5371:5;5360:17;;;;;;;;;;;;;;;;;;;;:43;;;5343:16;:61::i;:::-;5314:90;;5469:20;5468:21;5460:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5549:2;5527:24;;5575:1;5566:10;;5561:150;5582:10;:17;;;;5578:1;:21;5561:150;;;5624:10;5635:1;5624:13;;;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;5620:81;;;5684:1;5662:24;;5620:81;5601:3;;;;;;;5561:150;;;5761:1;5743:15;:19;5729:5;:34;5721:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5959:1;5912:10;5923:5;5912:17;;;;;;;;;;;;;;;;;;;;:43;;;:48;5908:792;;;5989:1;5980:5;:10;:43;;;;;5994:29;;;;;;;;;;;5980:43;5976:395;;;6240:1;6194:10;6205:5;6194:17;;;;;;;;;;;;;;;;;;;;:43;;:47;;;;5976:395;;;6326:30;6334:21;;6326:3;:7;;:30;;;;:::i;:::-;6280:10;6291:5;6280:17;;;;;;;;;;;;;;;;;;;;:43;;:76;;;;5976:395;5908:792;;;6544:21;:46;;;;;6569:21;6544:46;6540:160;;;6652:37;6660:28;6686:1;6660:21;;:25;;:28;;;;:::i;:::-;6652:3;:7;;:37;;;;:::i;:::-;6606:10;6617:5;6606:17;;;;;;;;;;;;;;;;;;;;:43;;:83;;;;6540:160;5908:792;5068:1638;;;;;;:::o;883:33::-;;;;:::o;7757:961::-;7838:26;7926:20;8020:25;8209:11;12342:18;;;;;;;;;;;12334:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:6;;;;;;;;;;;12247:7;12239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:3;7867:10;7878:5;7867:17;;;;;;;;;;;;;;;;;;;;:43;;;:49;7838:78;;7949:61;7966:10;7977:5;7966:17;;;;;;;;;;;;;;;;;;;;:43;;;7949:16;:61::i;:::-;7926:84;;8048:10;8059:5;8048:17;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;8020:50;;8084:21;:41;;;;;8110:15;8109:16;8084:41;:66;;;;;8130:20;8129:21;8084:66;8080:632;;;8191:4;8166:10;8177:5;8166:17;;;;;;;;;;;;;;;;;;;;:22;;;:29;;;;;;;;;;;;;;;;;;8223:10;8234:5;8223:17;;;;;;;;;;;;;;;;;;;;:24;;;8209:38;;8261:11;;;;;;;;;;;:20;;:28;8282:6;8261:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8261:28:0;8318:11;;;;;;;;;;;8308:30;;;8331:6;8308:30;;;;;;;;;;;;;;;;;;8440:1;8408:28;8430:5;8408:10;:17;;;;:21;;:28;;;;:::i;:::-;:33;8404:219;;;8596:11;;;;;;;;;;;8583:25;;;8404:219;8080:632;;;8653:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8080:632;7757:961;;;;;:::o;1207:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;948:21::-;;;;:::o;12005:96::-;12053:4;12081:12;;;;;;;;;;;12076:18;;;;;;;;12069:25;;12005:96;:::o;3374:1688::-;3481:20;4050:23;4124:21;12462:8;;12455:3;:15;;:38;;;;;12475:18;;;;;;;;;;;12474:19;12455:38;12447:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:6;;;;;;;;;;;12247:7;12239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3504:27;3521:9;3504:12;;:16;;:27;;;;:::i;:::-;3481:50;;3568:9;;3549:15;:28;;3541:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4089:25;;4076:9;:38;;4050:64;;4167:9;;4148:15;:28;4124:52;;4194:18;:38;;;;4216:16;4194:38;4186:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4427:1;4380:12;:24;4393:10;4380:24;;;;;;;;;;;;;;;:43;;;:48;4376:502;;;4471:207;;;;;;;;;4521:9;4471:207;;;;4577:10;:17;;;;4566:29;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4566:29:0;;;;4471:207;;;;4625:5;4471:207;;;;;;4658:5;4471:207;;;;;4444:12;:24;4457:10;4444:24;;;;;;;;;;;;;;;:234;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:15;4713:10;4692:32;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4692:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4376:502;;;4809:58;4857:9;4809:12;:24;4822:10;4809:24;;;;;;;;;;;;;;;:43;;;:47;;:58;;;;:::i;:::-;4763:12;:24;4776:10;4763:24;;;;;;;;;;;;;;;:43;;:104;;;;4376:502;4903:15;4888:12;:30;;;;4948:9;;4932:12;;:25;4928:81;;;4994:4;4973:18;;:25;;;;;;;;;;;;;;;;;;4928:81;5033:10;5023:32;;;5045:9;5023:32;;;;;;;;;;;;;;;;;;3374:1688;;;:::o;800:30::-;;;;;;;;;;;;;:::o;836:41::-;;;;;;;;;;;;;:::o;1401:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11503:109::-;11544:4;11574:8;;11567:3;:15;;:38;;;;;11587:18;;;;;;;;;;;11586:19;11567:38;11560:45;;11503:109;:::o;1060:116:2:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;1238:128::-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;203:380::-;263:9;495:1;489:2;:7;485:36;;;513:1;506:8;;;;485:36;536:2;531;:7;527:11;;561:2;555;551:1;:6;;;;;;;;:12;544:20;;;;;;577:1;570:8;;203:380;;;;;:::o;665:283::-;725:7;941:2;936;:7;;;;;;;;929:14;;665:283;;;;:::o;87:12715:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.24;\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n\ncontract CrowdFund {\n using SafeMath for uint256;\n\n enum FreezeReason {\n CALLER_IS_TRUSTEE,\n CROWD_FUND_FAILED,\n MAJORITY_VOTING_TO_REFUND\n }\n\n FreezeReason freezeReason;\n\n struct Milestone {\n uint amount;\n uint amountVotingAgainstPayout;\n uint payoutRequestVoteDeadline;\n bool paid;\n }\n\n struct Contributor {\n uint contributionAmount;\n // array index bool reflect milestone index vote\n bool[] milestoneNoVotes;\n bool refundVote;\n bool refunded;\n }\n\n event Deposited(address indexed payee, uint256 weiAmount);\n event Withdrawn(address indexed payee, uint256 weiAmount);\n\n bool public frozen;\n bool public isRaiseGoalReached;\n bool public immediateFirstMilestonePayout;\n uint public milestoneVotingPeriod;\n uint public deadline;\n uint public raiseGoal;\n uint public amountRaised;\n uint public frozenBalance;\n uint public minimumContributionAmount;\n uint public amountVotingForRefund;\n address public beneficiary;\n mapping(address => Contributor) public contributors;\n address[] public contributorList;\n // authorized addresses to ask for milestone payouts\n address[] public trustees;\n // constructor ensures that all values combined equal raiseGoal\n Milestone[] public milestones;\n\n constructor(\n uint _raiseGoal,\n address _beneficiary,\n address[] _trustees,\n uint[] _milestones,\n uint _deadline,\n uint _milestoneVotingPeriod,\n bool _immediateFirstMilestonePayout)\n public {\n require(_raiseGoal >= 1 ether, \"Raise goal is smaller than 1 ether\");\n require(_trustees.length >= 1 && _trustees.length <= 10, \"Trustee addresses must be at least 1 and not more than 10\");\n require(_milestones.length >= 1 && _milestones.length <= 10, \"Milestones must be at least 1 and not more than 10\");\n // TODO - require minimum duration\n // TODO - require minimum milestone voting period\n\n // ensure that cumalative milestone payouts equal raiseGoalAmount\n uint milestoneTotal = 0;\n for (uint i = 0; i < _milestones.length; i++) {\n uint milestoneAmount = _milestones[i];\n require(milestoneAmount > 0, \"Milestone amount must be greater than 0\");\n milestoneTotal = milestoneTotal.add(milestoneAmount);\n milestones.push(Milestone({\n amount: milestoneAmount,\n payoutRequestVoteDeadline: 0,\n amountVotingAgainstPayout: 0,\n paid: false\n }));\n }\n require(milestoneTotal == _raiseGoal, \"Milestone total must equal raise goal\");\n // TODO - increase minimum contribution amount is 0.1% of raise goal\n minimumContributionAmount = 1;\n raiseGoal = _raiseGoal;\n beneficiary = _beneficiary;\n trustees = _trustees;\n deadline = now + _deadline;\n milestoneVotingPeriod = _milestoneVotingPeriod;\n immediateFirstMilestonePayout = _immediateFirstMilestonePayout;\n isRaiseGoalReached = false;\n amountVotingForRefund = 0;\n frozen = false;\n // assumes no ether contributed as part of contract deployment\n amountRaised = 0;\n }\n\n function contribute() public payable onlyOnGoing onlyUnfrozen {\n // don't allow overfunding\n uint newAmountRaised = amountRaised.add(msg.value);\n require(newAmountRaised <= raiseGoal, \"Contribution exceeds the raise goal.\");\n // require minimumContributionAmount (set during construction)\n // there may be a special case where just enough has been raised so that the remaining raise amount is just smaller than the minimumContributionAmount\n // in this case, allow that the msg.value + amountRaised will equal the raiseGoal.\n // This makes sure that we don't enter a scenario where a proposal can never be fully funded\n bool greaterThanMinimum = msg.value >= minimumContributionAmount;\n bool exactlyRaiseGoal = newAmountRaised == raiseGoal;\n require(greaterThanMinimum || exactlyRaiseGoal, \"msg.value greater than minimum, or msg.value == remaining amount to be raised\");\n // in cases where an address pays > 1 times\n if (contributors[msg.sender].contributionAmount == 0) {\n contributors[msg.sender] = Contributor({\n contributionAmount: msg.value,\n milestoneNoVotes: new bool[](milestones.length),\n refundVote: false,\n refunded: false\n });\n contributorList.push(msg.sender);\n }\n else {\n contributors[msg.sender].contributionAmount = contributors[msg.sender].contributionAmount.add(msg.value);\n }\n\n amountRaised = newAmountRaised;\n if (amountRaised == raiseGoal) {\n isRaiseGoalReached = true;\n }\n emit Deposited(msg.sender, msg.value);\n }\n\n function requestMilestonePayout (uint index) public onlyTrustee onlyRaised onlyUnfrozen {\n bool milestoneAlreadyPaid = milestones[index].paid;\n bool voteDeadlineHasPassed = milestones[index].payoutRequestVoteDeadline > now;\n bool majorityAgainstPayout = isMajorityVoting(milestones[index].amountVotingAgainstPayout);\n // prevent requesting paid milestones\n require(!milestoneAlreadyPaid, \"Milestone already paid\");\n\n int lowestIndexPaid = -1;\n for (uint i = 0; i < milestones.length; i++) {\n if (milestones[i].paid) {\n lowestIndexPaid = int(i);\n }\n }\n\n require(index == uint(lowestIndexPaid + 1), \"Milestone request must be for first unpaid milestone\");\n // begin grace period for contributors to vote no on milestone payout\n if (milestones[index].payoutRequestVoteDeadline == 0) {\n if (index == 0 && immediateFirstMilestonePayout) {\n // make milestone payouts immediately avtheailable for the first milestone if immediateFirstMilestonePayout is set during consutrction\n milestones[index].payoutRequestVoteDeadline = 1;\n } else {\n milestones[index].payoutRequestVoteDeadline = now.add(milestoneVotingPeriod);\n }\n }\n // if the payoutRequestVoteDealine has passed and majority voted against it previously, begin the grace period with 2 times the deadline\n else if (voteDeadlineHasPassed && majorityAgainstPayout) {\n milestones[index].payoutRequestVoteDeadline = now.add(milestoneVotingPeriod.mul(2));\n }\n }\n\n function voteMilestonePayout(uint index, bool vote) public onlyContributor onlyRaised onlyUnfrozen {\n bool existingMilestoneNoVote = contributors[msg.sender].milestoneNoVotes[index];\n require(existingMilestoneNoVote != vote, \"Vote value must be different than existing vote state\");\n bool milestoneVotingStarted = milestones[index].payoutRequestVoteDeadline > 0;\n bool votePeriodHasEnded = milestones[index].payoutRequestVoteDeadline <= now;\n bool onGoingVote = milestoneVotingStarted && !votePeriodHasEnded;\n require(onGoingVote, \"Milestone voting must be open\");\n contributors[msg.sender].milestoneNoVotes[index] = vote;\n if (!vote) {\n milestones[index].amountVotingAgainstPayout = milestones[index].amountVotingAgainstPayout.sub(contributors[msg.sender].contributionAmount);\n } else if (vote) {\n milestones[index].amountVotingAgainstPayout = milestones[index].amountVotingAgainstPayout.add(contributors[msg.sender].contributionAmount);\n }\n }\n\n function payMilestonePayout(uint index) public onlyRaised onlyUnfrozen {\n bool voteDeadlineHasPassed = milestones[index].payoutRequestVoteDeadline < now;\n bool majorityVotedNo = isMajorityVoting(milestones[index].amountVotingAgainstPayout);\n bool milestoneAlreadyPaid = milestones[index].paid;\n if (voteDeadlineHasPassed && !majorityVotedNo && !milestoneAlreadyPaid) {\n milestones[index].paid = true;\n uint amount = milestones[index].amount;\n beneficiary.transfer(amount);\n emit Withdrawn(beneficiary, amount);\n // if the final milestone just got paid\n if (milestones.length.sub(index) == 1) {\n // useful to selfdestruct in case funds were forcefully deposited into contract. otherwise they are lost.\n selfdestruct(beneficiary);\n }\n } else {\n revert(\"required conditions were not satisfied\");\n }\n }\n\n function voteRefund(bool vote) public onlyContributor onlyRaised onlyUnfrozen {\n bool refundVote = contributors[msg.sender].refundVote;\n require(vote != refundVote, \"Existing vote state is identical to vote value\");\n contributors[msg.sender].refundVote = vote;\n if (!vote) {\n amountVotingForRefund = amountVotingForRefund.sub(contributors[msg.sender].contributionAmount);\n }\n else if (vote) {\n amountVotingForRefund = amountVotingForRefund.add(contributors[msg.sender].contributionAmount);\n }\n }\n\n function refund() public onlyUnfrozen {\n bool callerIsTrustee = isCallerTrustee();\n bool crowdFundFailed = isFailed();\n bool majorityVotingToRefund = isMajorityVoting(amountVotingForRefund);\n require(callerIsTrustee || crowdFundFailed || majorityVotingToRefund, \"Required conditions for refund are not met\");\n if (callerIsTrustee) {\n freezeReason = FreezeReason.CALLER_IS_TRUSTEE;\n } else if (crowdFundFailed) {\n freezeReason = FreezeReason.CROWD_FUND_FAILED;\n } else {\n freezeReason = FreezeReason.MAJORITY_VOTING_TO_REFUND;\n }\n frozen = true;\n frozenBalance = address(this).balance;\n }\n\n // anyone can refund a contributor if a crowdfund has been frozen\n function withdraw(address refundAddress) public onlyFrozen {\n require(frozen, \"CrowdFund is not frozen\");\n bool isRefunded = contributors[refundAddress].refunded;\n require(!isRefunded, \"Specified address is already refunded\");\n contributors[refundAddress].refunded = true;\n uint contributionAmount = contributors[refundAddress].contributionAmount;\n uint amountToRefund = contributionAmount.mul(address(this).balance).div(frozenBalance);\n refundAddress.transfer(amountToRefund);\n emit Withdrawn(refundAddress, amountToRefund);\n }\n\n // it may be useful to selfdestruct in case funds were force deposited to the contract\n function destroy() public onlyTrustee onlyFrozen {\n for (uint i = 0; i < contributorList.length; i++) {\n address contributorAddress = contributorList[i];\n if (!contributors[contributorAddress].refunded) {\n revert(\"At least one contributor has not yet refunded\");\n }\n }\n selfdestruct(beneficiary);\n }\n\n function isMajorityVoting(uint valueVoting) public view returns (bool) {\n return valueVoting.mul(2) > amountRaised;\n }\n\n function isCallerTrustee() public view returns (bool) {\n for (uint i = 0; i < trustees.length; i++) {\n if (msg.sender == trustees[i]) {\n return true;\n }\n }\n return false;\n }\n\n function isFailed() public view returns (bool) {\n return now >= deadline && !isRaiseGoalReached;\n }\n\n function getContributorMilestoneVote(address contributorAddress, uint milestoneIndex) public view returns (bool) { \n return contributors[contributorAddress].milestoneNoVotes[milestoneIndex];\n }\n\n function getContributorContributionAmount(address contributorAddress) public view returns (uint) {\n return contributors[contributorAddress].contributionAmount;\n }\n\n function getFreezeReason() public view returns (uint) {\n return uint(freezeReason);\n }\n\n modifier onlyFrozen() {\n require(frozen, \"CrowdFund is not frozen\");\n _;\n }\n\n modifier onlyUnfrozen() {\n require(!frozen, \"CrowdFund is frozen\");\n _;\n }\n\n modifier onlyRaised() {\n require(isRaiseGoalReached, \"Raise goal is not reached\");\n _;\n }\n\n modifier onlyOnGoing() {\n require(now <= deadline && !isRaiseGoalReached, \"CrowdFund is not ongoing\");\n _;\n }\n\n modifier onlyContributor() {\n require(contributors[msg.sender].contributionAmount != 0, \"Caller is not a contributor\");\n _;\n }\n\n modifier onlyTrustee() {\n require(isCallerTrustee(), \"Caller is not a trustee\");\n _;\n }\n\n}", - "sourcePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFund.sol", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620032e0380380620032e0833981018060405281019080805190602001909291908051906020019092919080518201929190602001805182019291906020018051906020019092919080519060200190929190805190602001909291905050506000806000670de0b6b3a76400008a1015151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526169736520676f616c20697320736d616c6c6572207468616e20312065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001885110158015620001365750600a885111155b1515620001d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5472757374656520616464726573736573206d757374206265206174206c656181526020017f7374203120616e64206e6f74206d6f7265207468616e2031300000000000000081525060400191505060405180910390fd5b6001875110158015620001e65750600a875111155b151562000281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d696c6573746f6e6573206d757374206265206174206c65617374203120616e81526020017f64206e6f74206d6f7265207468616e203130000000000000000000000000000081525060400191505060405180910390fd5b60009250600091505b865182101562000416578682815181101515620002a357fe5b9060200190602002015190506000811115156200034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f4d696c6573746f6e6520616d6f756e74206d757374206265206772656174657281526020017f207468616e20300000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6200037181846200059b6401000000000262002ad7179091906401000000009004565b9250600c6080604051908101604052808381526020016000815260200160008152602001600015158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050505081806001019250506200028a565b8983141515620004b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d696c6573746f6e6520746f74616c206d75737420657175616c20726169736581526020017f20676f616c00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60016006819055508960038190555088600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b90805190602001906200051c929190620005b8565b508542016002819055508460018190555083600060036101000a81548160ff02191690831515021790555060008060026101000a81548160ff021916908315150217905550600060078190555060008060016101000a81548160ff0219169083151502179055506000600481905550505050505050505050506200068d565b60008183019050828110151515620005af57fe5b80905092915050565b82805482825590600052602060002090810192821562000634579160200282015b82811115620006335782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005d9565b5b50905062000643919062000647565b5090565b6200068a91905b808211156200068657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200064e565b5090565b90565b612c43806200069d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e68565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e94565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb5565b005b34801561041557600080fd5b5061041e61122a565b005b34801561042c57600080fd5b5061044d60048036038101908080351515906020019092919050505061143e565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061181c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185a565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118a6565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ac565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b2f565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611ba8565b005b3480156105f357600080fd5b506105fc61205d565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612063565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061243c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c161247a565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec612480565b6040518082815260200191505060405180910390f35b61070a6124a1565b005b34801561071857600080fd5b50610721612a26565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a39565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a4c565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612a98565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612abe90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e60565b610e3b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e1b57fe5b906000526020600020906004020160010154612ad790919063ffffffff16565b600c87815481101515610e4a57fe5b9060005260206000209060040201600101819055505b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610ead600284612af390919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154915061118d60055461117f3073ffffffffffffffffffffffffffffffffffffffff163185612af390919063ffffffff16565b612b2b90919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111d5573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112bb610850565b92506112c5612a98565b91506112d2600754610e94565b905082806112dd5750815b806112e55750805b151561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113ad5760008060006101000a81548160ff021916908360028111156113a357fe5b0217905550611400565b81156113db5760016000806101000a81548160ff021916908360028111156113d157fe5b02179055506113ff565b60026000806101000a81548160ff021916908360028111156113f957fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff16151561157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117ba576117af600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612abe90919063ffffffff16565b600781905550611818565b611811600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ad790919063ffffffff16565b6007819055505b5050565b600b8181548110151561182b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118b7610850565b151561192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611af457600a828154811015156119d057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119b4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8057fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bb8610850565b1515611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d4457fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d7557fe5b906000526020600020906004020160020154119350611db3600c87815481101515611d9c57fe5b906000526020600020906004020160010154610e94565b925084151515611e2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611ea457600c81815481101515611e6f57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611e97578091505b8080600101915050611e53565b6001820186141515611f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f5557fe5b9060005260206000209060040201600201541415611ff857600086148015611f895750600060039054906101000a900460ff165b15611fb9576001600c87815481101515611f9f57fe5b906000526020600020906004020160020181905550611ff3565b611fce60015442612ad790919063ffffffff16565b600c87815481101515611fdd57fe5b9060005260206000209060040201600201819055505b612055565b8380156120025750825b156120545761202f6120206002600154612af390919063ffffffff16565b42612ad790919063ffffffff16565b600c8781548110151561203e57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561218257fe5b9060005260206000209060040201600201541093506121c0600c868154811015156121a957fe5b906000526020600020906004020160010154610e94565b9250600c858154811015156121d157fe5b906000526020600020906004020160030160009054906101000a900460ff1691508380156121fd575082155b8015612207575081155b156123a1576001600c8681548110151561221d57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561225457fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122d0573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161235b86600c80549050612abe90919063ffffffff16565b141561239c57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612435565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561244b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff16600281111561249c57fe5b905090565b600080600060025442111580156124c55750600060029054906101000a900460ff16155b1515612539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125d334600454612ad790919063ffffffff16565b92506003548311151515612675576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061268d5750805b151561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561290857608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127de5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612859929190612b41565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129a4565b61295d34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ad790919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129d3576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a5b57fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ab95750600060029054906101000a900460ff16155b905090565b6000828211151515612acc57fe5b818303905092915050565b60008183019050828110151515612aea57fe5b80905092915050565b600080831415612b065760009050612b25565b8183029050818382811515612b1757fe5b04141515612b2157fe5b8090505b92915050565b60008183811515612b3857fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612bd65791602002820160005b83821115612ba757835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b6a565b8015612bd45782816101000a81549060ff0219169055600101602081600001049283019260010302612ba7565b505b509050612be39190612be7565b5090565b612c1491905b80821115612c1057600081816101000a81549060ff021916905550600101612bed565b5090565b905600a165627a7a7230582051351396444f74bc4a8b3921cf045e1b2aea376db653835bbe15cc04725c9b3d0029", + "deployedBytecode": "0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e68565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e94565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb5565b005b34801561041557600080fd5b5061041e61122a565b005b34801561042c57600080fd5b5061044d60048036038101908080351515906020019092919050505061143e565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061181c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185a565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118a6565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ac565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b2f565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611ba8565b005b3480156105f357600080fd5b506105fc61205d565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612063565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061243c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c161247a565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec612480565b6040518082815260200191505060405180910390f35b61070a6124a1565b005b34801561071857600080fd5b50610721612a26565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a39565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a4c565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612a98565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612abe90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e60565b610e3b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e1b57fe5b906000526020600020906004020160010154612ad790919063ffffffff16565b600c87815481101515610e4a57fe5b9060005260206000209060040201600101819055505b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610ead600284612af390919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154915061118d60055461117f3073ffffffffffffffffffffffffffffffffffffffff163185612af390919063ffffffff16565b612b2b90919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111d5573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112bb610850565b92506112c5612a98565b91506112d2600754610e94565b905082806112dd5750815b806112e55750805b151561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113ad5760008060006101000a81548160ff021916908360028111156113a357fe5b0217905550611400565b81156113db5760016000806101000a81548160ff021916908360028111156113d157fe5b02179055506113ff565b60026000806101000a81548160ff021916908360028111156113f957fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff16151561157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117ba576117af600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612abe90919063ffffffff16565b600781905550611818565b611811600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ad790919063ffffffff16565b6007819055505b5050565b600b8181548110151561182b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118b7610850565b151561192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611af457600a828154811015156119d057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119b4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8057fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bb8610850565b1515611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d4457fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d7557fe5b906000526020600020906004020160020154119350611db3600c87815481101515611d9c57fe5b906000526020600020906004020160010154610e94565b925084151515611e2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611ea457600c81815481101515611e6f57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611e97578091505b8080600101915050611e53565b6001820186141515611f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f5557fe5b9060005260206000209060040201600201541415611ff857600086148015611f895750600060039054906101000a900460ff165b15611fb9576001600c87815481101515611f9f57fe5b906000526020600020906004020160020181905550611ff3565b611fce60015442612ad790919063ffffffff16565b600c87815481101515611fdd57fe5b9060005260206000209060040201600201819055505b612055565b8380156120025750825b156120545761202f6120206002600154612af390919063ffffffff16565b42612ad790919063ffffffff16565b600c8781548110151561203e57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561218257fe5b9060005260206000209060040201600201541093506121c0600c868154811015156121a957fe5b906000526020600020906004020160010154610e94565b9250600c858154811015156121d157fe5b906000526020600020906004020160030160009054906101000a900460ff1691508380156121fd575082155b8015612207575081155b156123a1576001600c8681548110151561221d57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561225457fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122d0573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161235b86600c80549050612abe90919063ffffffff16565b141561239c57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612435565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561244b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff16600281111561249c57fe5b905090565b600080600060025442111580156124c55750600060029054906101000a900460ff16155b1515612539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125d334600454612ad790919063ffffffff16565b92506003548311151515612675576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061268d5750805b151561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561290857608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127de5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612859929190612b41565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129a4565b61295d34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ad790919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129d3576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a5b57fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ab95750600060029054906101000a900460ff16155b905090565b6000828211151515612acc57fe5b818303905092915050565b60008183019050828110151515612aea57fe5b80905092915050565b600080831415612b065760009050612b25565b8183029050818382811515612b1757fe5b04141515612b2157fe5b8090505b92915050565b60008183811515612b3857fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612bd65791602002820160005b83821115612ba757835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b6a565b8015612bd45782816101000a81549060ff0219169055600101602081600001049283019260010302612ba7565b505b509050612be39190612be7565b5090565b612c1491905b80821115612c1057600081816101000a81549060ff021916905550600101612bed565b5090565b905600a165627a7a7230582051351396444f74bc4a8b3921cf045e1b2aea376db653835bbe15cc04725c9b3d0029", + "sourceMap": "87:12687:0:-;;;1437:1931;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:1931:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2194:19;2232:6;2287:20;1711:7;1697:10;:21;;1689:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1;1775:9;:16;:21;;:47;;;;;1820:2;1800:9;:16;:22;;1775:47;1767:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1924:1;1902:11;:18;:23;;:51;;;;;1951:2;1929:11;:18;:24;;1902:51;1894:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2216:1;2194:23;;2241:1;2232:10;;2227:477;2248:11;:18;2244:1;:22;2227:477;;;2310:11;2322:1;2310:14;;;;;;;;;;;;;;;;;;2287:37;;2364:1;2346:15;:19;2338:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2440:35;2459:15;2440:14;:18;;;;;;:35;;;;;:::i;:::-;2423:52;;2489:10;2505:187;;;;;;;;;2541:15;2505:187;;;;2647:1;2505:187;;;;2601:1;2505:187;;;;2672:5;2505:187;;;;;2489:204;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2489:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2268:3;;;;;;;2227:477;;;2739:10;2721:14;:28;2713:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2906:1;2878:25;:29;;;;2929:10;2917:9;:22;;;;2963:12;2949:11;;:26;;;;;;;;;;;;;;;;;;2996:9;2985:8;:20;;;;;;;;;;;;:::i;:::-;;3032:9;3026:3;:15;3015:8;:26;;;;3075:22;3051:21;:46;;;;3139:30;3107:29;;:62;;;;;;;;;;;;;;;;;;3200:5;3179:18;;:26;;;;;;;;;;;;;;;;;;3239:1;3215:21;:25;;;;3259:5;3250:6;;:14;;;;;;;;;;;;;;;;;;3360:1;3345:12;:16;;;;1437:1931;;;;;;;;;;87:12687;;1238:128:2;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;87:12687:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "87:12687:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;776:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;776:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1079:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:33:0;;;;;;;;;;;;;;;;;;;;;;;1150:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11235:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11235:234:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1005:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1005:25:0;;;;;;;;;;;;;;;;;;;;;;;922:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;922:20:0;;;;;;;;;;;;;;;;;;;;;;;6712:1029;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6712:1029:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1036:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:37:0;;;;;;;;;;;;;;;;;;;;;;;1118:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1118:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11101:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11101:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10040:587;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10040:587:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9271:693;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9271:693:0;;;;;;8714:551;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8714:551:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1302:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11799:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11799:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;975:24:0;;;;;;;;;;;;;;;;;;;;;;;10724:371;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10724:371:0;;;;;;11590:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11590:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5068:1638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5068:1638:0;;;;;;;;;;;;;;;;;;;;;;;;;;883:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;883:33:0;;;;;;;;;;;;;;;;;;;;;;;7747:961;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7747:961:0;;;;;;;;;;;;;;;;;;;;;;;;;;1207:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1207:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:21:0;;;;;;;;;;;;;;;;;;;;;;;11977:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11977:96:0;;;;;;;;;;;;;;;;;;;;;;;3374:1688;;;;;;800:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;800:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;836:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;836:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1401:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1401:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11475:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11475:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;776:18;;;;;;;;;;;;;:::o;1079:33::-;;;;:::o;1150:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11235:234::-;11283:4;11304:6;11313:1;11304:10;;11299:142;11320:8;:15;;;;11316:1;:19;11299:142;;;11374:8;11383:1;11374:11;;;;;;;;;;;;;;;;;;;;;;;;;;;11360:25;;:10;:25;;;11356:75;;;11412:4;11405:11;;;;11356:75;11337:3;;;;;;;11299:142;;;11457:5;11450:12;;11235:234;;;:::o;1005:25::-;;;;:::o;922:20::-;;;;:::o;6712:1029::-;6821:28;7017:27;7104:23;7190:16;12610:1;12563:12;:24;12576:10;12563:24;;;;;;;;;;;;;;;:43;;;:48;;12555:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12314:18;;;;;;;;;;;12306:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:6;;;;;;;;;;;12219:7;12211:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6852:12;:24;6865:10;6852:24;;;;;;;;;;;;;;;:41;;6894:5;6852:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6821:79;;6945:4;6918:31;;:23;:31;;;;6910:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:1;7047:10;7058:5;7047:17;;;;;;;;;;;;;;;;;;;;:43;;;:47;7017:77;;7177:3;7130:10;7141:5;7130:17;;;;;;;;;;;;;;;;;;;;:43;;;:50;;7104:76;;7209:22;:45;;;;;7236:18;7235:19;7209:45;7190:64;;7272:11;7264:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7378:4;7327:12;:24;7340:10;7327:24;;;;;;;;;;;;;;;:41;;7369:5;7327:48;;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;7397:4;7396:5;7392:343;;;7463:92;7511:12;:24;7524:10;7511:24;;;;;;;;;;;;;;;:43;;;7463:10;7474:5;7463:17;;;;;;;;;;;;;;;;;;;;:43;;;:47;;:92;;;;:::i;:::-;7417:10;7428:5;7417:17;;;;;;;;;;;;;;;;;;;;:43;;:138;;;;7392:343;;;7632:92;7680:12;:24;7693:10;7680:24;;;;;;;;;;;;;;;:43;;;7632:10;7643:5;7632:17;;;;;;;;;;;;;;;;;;;;:43;;;:47;;:92;;;;:::i;:::-;7586:10;7597:5;7586:17;;;;;;;;;;;;;;;;;;;;:43;;:138;;;;7392:343;6712:1029;;;;;;:::o;1036:37::-;;;;:::o;1118:26::-;;;;;;;;;;;;;:::o;11101:128::-;11166:4;11210:12;;11189:18;11205:1;11189:11;:15;;:18;;;;:::i;:::-;:33;11182:40;;11101:128;;;:::o;10040:587::-;10161:15;10349:23;10431:19;12119:6;;;;;;;;;;;12111:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10117:6;;;;;;;;;;;10109:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10179:12;:27;10192:13;10179:27;;;;;;;;;;;;;;;:36;;;;;;;;;;;;10161:54;;10234:10;10233:11;10225:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10335:4;10296:12;:27;10309:13;10296:27;;;;;;;;;;;;;;;:36;;;:43;;;;;;;;;;;;;;;;;;10375:12;:27;10388:13;10375:27;;;;;;;;;;;;;;;:46;;;10349:72;;10453:64;10503:13;;10453:45;10484:4;10476:21;;;10453:18;:22;;:45;;;;:::i;:::-;:49;;:64;;;;:::i;:::-;10431:86;;10527:13;:22;;:38;10550:14;10527:38;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10527:38:0;10590:13;10580:40;;;10605:14;10580:40;;;;;;;;;;;;;;;;;;10040:587;;;;:::o;9271:693::-;9319:20;9369;9412:27;12220:6;;;;;;;;;;;12219:7;12211:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9342:17;:15;:17::i;:::-;9319:40;;9392:10;:8;:10::i;:::-;9369:33;;9442:39;9459:21;;9442:16;:39::i;:::-;9412:69;;9499:15;:34;;;;9518:15;9499:34;:60;;;;9537:22;9499:60;9491:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9620:15;9616:272;;;9666:30;9651:12;;:45;;;;;;;;;;;;;;;;;;;;;;;;9616:272;;;9717:15;9713:175;;;9763:30;9748:12;;:45;;;;;;;;;;;;;;;;;;;;;;;;9713:175;;;9839:38;9824:12;;:53;;;;;;;;;;;;;;;;;;;;;;;;9713:175;9616:272;9906:4;9897:6;;:13;;;;;;;;;;;;;;;;;;9944:4;9936:21;;;9920:13;:37;;;;9271:693;;;:::o;8714:551::-;8802:15;12610:1;12563:12;:24;12576:10;12563:24;;;;;;;;;;;;;;;:43;;;:48;;12555:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12314:18;;;;;;;;;;;12306:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:6;;;;;;;;;;;12219:7;12211:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8820:12;:24;8833:10;8820:24;;;;;;;;;;;;;;;:35;;;;;;;;;;;;8802:53;;8881:10;8873:18;;:4;:18;;;;8865:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8990:4;8952:12;:24;8965:10;8952:24;;;;;;;;;;;;;;;:35;;;:42;;;;;;;;;;;;;;;;;;9009:4;9008:5;9004:255;;;9053:70;9079:12;:24;9092:10;9079:24;;;;;;;;;;;;;;;:43;;;9053:21;;:25;;:70;;;;:::i;:::-;9029:21;:94;;;;9004:255;;;9178:70;9204:12;:24;9217:10;9204:24;;;;;;;;;;;;;;;:43;;;9178:21;;:25;;:70;;;;:::i;:::-;9154:21;:94;;;;9004:255;8714:551;;:::o;1302:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11799:172::-;11890:4;11913:12;:32;11926:18;11913:32;;;;;;;;;;;;;;;:51;;;11906:58;;11799:172;;;:::o;975:24::-;;;;:::o;10724:371::-;10788:6;10847:26;12708:17;:15;:17::i;:::-;12700:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:6;;;;;;;;;;;12111:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10797:1;10788:10;;10783:271;10804:15;:22;;;;10800:1;:26;10783:271;;;10876:15;10892:1;10876:18;;;;;;;;;;;;;;;;;;;;;;;;;;;10847:47;;10913:12;:32;10926:18;10913:32;;;;;;;;;;;;;;;:41;;;;;;;;;;;;10912:42;10908:136;;;10974:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10908:136;10828:3;;;;;;;10783:271;;;11076:11;;;;;;;;;;;11063:25;;;11590:203;11697:4;11721:12;:32;11734:18;11721:32;;;;;;;;;;;;;;;:49;;11771:14;11721:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11714:72;;11590:203;;;;:::o;5068:1638::-;5166:25;5226:26;5314;5527:19;5566:6;12708:17;:15;:17::i;:::-;12700:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12314:18;;;;;;;;;;;12306:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:6;;;;;;;;;;;12219:7;12211:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5194:10;5205:5;5194:17;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;5166:50;;5301:3;5255:10;5266:5;5255:17;;;;;;;;;;;;;;;;;;;;:43;;;:49;5226:78;;5343:61;5360:10;5371:5;5360:17;;;;;;;;;;;;;;;;;;;;:43;;;5343:16;:61::i;:::-;5314:90;;5469:20;5468:21;5460:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5549:2;5527:24;;5575:1;5566:10;;5561:150;5582:10;:17;;;;5578:1;:21;5561:150;;;5624:10;5635:1;5624:13;;;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;5620:81;;;5684:1;5662:24;;5620:81;5601:3;;;;;;;5561:150;;;5761:1;5743:15;:19;5729:5;:34;5721:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5959:1;5912:10;5923:5;5912:17;;;;;;;;;;;;;;;;;;;;:43;;;:48;5908:792;;;5989:1;5980:5;:10;:43;;;;;5994:29;;;;;;;;;;;5980:43;5976:395;;;6240:1;6194:10;6205:5;6194:17;;;;;;;;;;;;;;;;;;;;:43;;:47;;;;5976:395;;;6326:30;6334:21;;6326:3;:7;;:30;;;;:::i;:::-;6280:10;6291:5;6280:17;;;;;;;;;;;;;;;;;;;;:43;;:76;;;;5976:395;5908:792;;;6544:21;:46;;;;;6569:21;6544:46;6540:160;;;6652:37;6660:28;6686:1;6660:21;;:25;;:28;;;;:::i;:::-;6652:3;:7;;:37;;;;:::i;:::-;6606:10;6617:5;6606:17;;;;;;;;;;;;;;;;;;;;:43;;:83;;;;6540:160;5908:792;5068:1638;;;;;;:::o;883:33::-;;;;:::o;7747:961::-;7828:26;7916:20;8010:25;8199:11;12314:18;;;;;;;;;;;12306:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:6;;;;;;;;;;;12219:7;12211:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7903:3;7857:10;7868:5;7857:17;;;;;;;;;;;;;;;;;;;;:43;;;:49;7828:78;;7939:61;7956:10;7967:5;7956:17;;;;;;;;;;;;;;;;;;;;:43;;;7939:16;:61::i;:::-;7916:84;;8038:10;8049:5;8038:17;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;8010:50;;8074:21;:41;;;;;8100:15;8099:16;8074:41;:66;;;;;8120:20;8119:21;8074:66;8070:632;;;8181:4;8156:10;8167:5;8156:17;;;;;;;;;;;;;;;;;;;;:22;;;:29;;;;;;;;;;;;;;;;;;8213:10;8224:5;8213:17;;;;;;;;;;;;;;;;;;;;:24;;;8199:38;;8251:11;;;;;;;;;;;:20;;:28;8272:6;8251:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8251:28:0;8308:11;;;;;;;;;;;8298:30;;;8321:6;8298:30;;;;;;;;;;;;;;;;;;8430:1;8398:28;8420:5;8398:10;:17;;;;:21;;:28;;;;:::i;:::-;:33;8394:219;;;8586:11;;;;;;;;;;;8573:25;;;8394:219;8070:632;;;8643:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:632;7747:961;;;;;:::o;1207:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;948:21::-;;;;:::o;11977:96::-;12025:4;12053:12;;;;;;;;;;;12048:18;;;;;;;;12041:25;;11977:96;:::o;3374:1688::-;3481:20;4050:23;4124:21;12434:8;;12427:3;:15;;:38;;;;;12447:18;;;;;;;;;;;12446:19;12427:38;12419:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:6;;;;;;;;;;;12219:7;12211:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3504:27;3521:9;3504:12;;:16;;:27;;;;:::i;:::-;3481:50;;3568:9;;3549:15;:28;;3541:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4089:25;;4076:9;:38;;4050:64;;4167:9;;4148:15;:28;4124:52;;4194:18;:38;;;;4216:16;4194:38;4186:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4427:1;4380:12;:24;4393:10;4380:24;;;;;;;;;;;;;;;:43;;;:48;4376:502;;;4471:207;;;;;;;;;4521:9;4471:207;;;;4577:10;:17;;;;4566:29;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4566:29:0;;;;4471:207;;;;4625:5;4471:207;;;;;;4658:5;4471:207;;;;;4444:12;:24;4457:10;4444:24;;;;;;;;;;;;;;;:234;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:15;4713:10;4692:32;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4692:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4376:502;;;4809:58;4857:9;4809:12;:24;4822:10;4809:24;;;;;;;;;;;;;;;:43;;;:47;;:58;;;;:::i;:::-;4763:12;:24;4776:10;4763:24;;;;;;;;;;;;;;;:43;;:104;;;;4376:502;4903:15;4888:12;:30;;;;4948:9;;4932:12;;:25;4928:81;;;4994:4;4973:18;;:25;;;;;;;;;;;;;;;;;;4928:81;5033:10;5023:32;;;5045:9;5023:32;;;;;;;;;;;;;;;;;;3374:1688;;;:::o;800:30::-;;;;;;;;;;;;;:::o;836:41::-;;;;;;;;;;;;;:::o;1401:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11475:109::-;11516:4;11546:8;;11539:3;:15;;:38;;;;;11559:18;;;;;;;;;;;11558:19;11539:38;11532:45;;11475:109;:::o;1060:116:2:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;1238:128::-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;203:380::-;263:9;495:1;489:2;:7;485:36;;;513:1;506:8;;;;485:36;536:2;531;:7;527:11;;561:2;555;551:1;:6;;;;;;;;:12;544:20;;;;;;577:1;570:8;;203:380;;;;;:::o;665:283::-;725:7;941:2;936;:7;;;;;;;;929:14;;665:283;;;;:::o;87:12687:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.24;\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n\ncontract CrowdFund {\n using SafeMath for uint256;\n\n enum FreezeReason {\n CALLER_IS_TRUSTEE,\n CROWD_FUND_FAILED,\n MAJORITY_VOTING_TO_REFUND\n }\n\n FreezeReason freezeReason;\n\n struct Milestone {\n uint amount;\n uint amountVotingAgainstPayout;\n uint payoutRequestVoteDeadline;\n bool paid;\n }\n\n struct Contributor {\n uint contributionAmount;\n // array index bool reflect milestone index vote\n bool[] milestoneNoVotes;\n bool refundVote;\n bool refunded;\n }\n\n event Deposited(address indexed payee, uint256 weiAmount);\n event Withdrawn(address indexed payee, uint256 weiAmount);\n\n bool public frozen;\n bool public isRaiseGoalReached;\n bool public immediateFirstMilestonePayout;\n uint public milestoneVotingPeriod;\n uint public deadline;\n uint public raiseGoal;\n uint public amountRaised;\n uint public frozenBalance;\n uint public minimumContributionAmount;\n uint public amountVotingForRefund;\n address public beneficiary;\n mapping(address => Contributor) public contributors;\n address[] public contributorList;\n // authorized addresses to ask for milestone payouts\n address[] public trustees;\n // constructor ensures that all values combined equal raiseGoal\n Milestone[] public milestones;\n\n constructor(\n uint _raiseGoal,\n address _beneficiary,\n address[] _trustees,\n uint[] _milestones,\n uint _deadline,\n uint _milestoneVotingPeriod,\n bool _immediateFirstMilestonePayout)\n public {\n require(_raiseGoal >= 1 ether, \"Raise goal is smaller than 1 ether\");\n require(_trustees.length >= 1 && _trustees.length <= 10, \"Trustee addresses must be at least 1 and not more than 10\");\n require(_milestones.length >= 1 && _milestones.length <= 10, \"Milestones must be at least 1 and not more than 10\");\n // TODO - require minimum duration\n // TODO - require minimum milestone voting period\n\n // ensure that cumalative milestone payouts equal raiseGoalAmount\n uint milestoneTotal = 0;\n for (uint i = 0; i < _milestones.length; i++) {\n uint milestoneAmount = _milestones[i];\n require(milestoneAmount > 0, \"Milestone amount must be greater than 0\");\n milestoneTotal = milestoneTotal.add(milestoneAmount);\n milestones.push(Milestone({\n amount: milestoneAmount,\n payoutRequestVoteDeadline: 0,\n amountVotingAgainstPayout: 0,\n paid: false\n }));\n }\n require(milestoneTotal == _raiseGoal, \"Milestone total must equal raise goal\");\n // TODO - increase minimum contribution amount is 0.1% of raise goal\n minimumContributionAmount = 1;\n raiseGoal = _raiseGoal;\n beneficiary = _beneficiary;\n trustees = _trustees;\n deadline = now + _deadline;\n milestoneVotingPeriod = _milestoneVotingPeriod;\n immediateFirstMilestonePayout = _immediateFirstMilestonePayout;\n isRaiseGoalReached = false;\n amountVotingForRefund = 0;\n frozen = false;\n // assumes no ether contributed as part of contract deployment\n amountRaised = 0;\n }\n\n function contribute() public payable onlyOnGoing onlyUnfrozen {\n // don't allow overfunding\n uint newAmountRaised = amountRaised.add(msg.value);\n require(newAmountRaised <= raiseGoal, \"Contribution exceeds the raise goal.\");\n // require minimumContributionAmount (set during construction)\n // there may be a special case where just enough has been raised so that the remaining raise amount is just smaller than the minimumContributionAmount\n // in this case, allow that the msg.value + amountRaised will equal the raiseGoal.\n // This makes sure that we don't enter a scenario where a proposal can never be fully funded\n bool greaterThanMinimum = msg.value >= minimumContributionAmount;\n bool exactlyRaiseGoal = newAmountRaised == raiseGoal;\n require(greaterThanMinimum || exactlyRaiseGoal, \"msg.value greater than minimum, or msg.value == remaining amount to be raised\");\n // in cases where an address pays > 1 times\n if (contributors[msg.sender].contributionAmount == 0) {\n contributors[msg.sender] = Contributor({\n contributionAmount: msg.value,\n milestoneNoVotes: new bool[](milestones.length),\n refundVote: false,\n refunded: false\n });\n contributorList.push(msg.sender);\n }\n else {\n contributors[msg.sender].contributionAmount = contributors[msg.sender].contributionAmount.add(msg.value);\n }\n\n amountRaised = newAmountRaised;\n if (amountRaised == raiseGoal) {\n isRaiseGoalReached = true;\n }\n emit Deposited(msg.sender, msg.value);\n }\n\n function requestMilestonePayout (uint index) public onlyTrustee onlyRaised onlyUnfrozen {\n bool milestoneAlreadyPaid = milestones[index].paid;\n bool voteDeadlineHasPassed = milestones[index].payoutRequestVoteDeadline > now;\n bool majorityAgainstPayout = isMajorityVoting(milestones[index].amountVotingAgainstPayout);\n // prevent requesting paid milestones\n require(!milestoneAlreadyPaid, \"Milestone already paid\");\n\n int lowestIndexPaid = -1;\n for (uint i = 0; i < milestones.length; i++) {\n if (milestones[i].paid) {\n lowestIndexPaid = int(i);\n }\n }\n\n require(index == uint(lowestIndexPaid + 1), \"Milestone request must be for first unpaid milestone\");\n // begin grace period for contributors to vote no on milestone payout\n if (milestones[index].payoutRequestVoteDeadline == 0) {\n if (index == 0 && immediateFirstMilestonePayout) {\n // make milestone payouts immediately avtheailable for the first milestone if immediateFirstMilestonePayout is set during consutrction\n milestones[index].payoutRequestVoteDeadline = 1;\n } else {\n milestones[index].payoutRequestVoteDeadline = now.add(milestoneVotingPeriod);\n }\n }\n // if the payoutRequestVoteDealine has passed and majority voted against it previously, begin the grace period with 2 times the deadline\n else if (voteDeadlineHasPassed && majorityAgainstPayout) {\n milestones[index].payoutRequestVoteDeadline = now.add(milestoneVotingPeriod.mul(2));\n }\n }\n\n function voteMilestonePayout(uint index, bool vote) public onlyContributor onlyRaised onlyUnfrozen {\n bool existingMilestoneNoVote = contributors[msg.sender].milestoneNoVotes[index];\n require(existingMilestoneNoVote != vote, \"Vote value must be different than existing vote state\");\n bool milestoneVotingStarted = milestones[index].payoutRequestVoteDeadline > 0;\n bool votePeriodHasEnded = milestones[index].payoutRequestVoteDeadline <= now;\n bool onGoingVote = milestoneVotingStarted && !votePeriodHasEnded;\n require(onGoingVote, \"Milestone voting must be open\");\n contributors[msg.sender].milestoneNoVotes[index] = vote;\n if (!vote) {\n milestones[index].amountVotingAgainstPayout = milestones[index].amountVotingAgainstPayout.sub(contributors[msg.sender].contributionAmount);\n } else {\n milestones[index].amountVotingAgainstPayout = milestones[index].amountVotingAgainstPayout.add(contributors[msg.sender].contributionAmount);\n }\n }\n\n function payMilestonePayout(uint index) public onlyRaised onlyUnfrozen {\n bool voteDeadlineHasPassed = milestones[index].payoutRequestVoteDeadline < now;\n bool majorityVotedNo = isMajorityVoting(milestones[index].amountVotingAgainstPayout);\n bool milestoneAlreadyPaid = milestones[index].paid;\n if (voteDeadlineHasPassed && !majorityVotedNo && !milestoneAlreadyPaid) {\n milestones[index].paid = true;\n uint amount = milestones[index].amount;\n beneficiary.transfer(amount);\n emit Withdrawn(beneficiary, amount);\n // if the final milestone just got paid\n if (milestones.length.sub(index) == 1) {\n // useful to selfdestruct in case funds were forcefully deposited into contract. otherwise they are lost.\n selfdestruct(beneficiary);\n }\n } else {\n revert(\"required conditions were not satisfied\");\n }\n }\n\n function voteRefund(bool vote) public onlyContributor onlyRaised onlyUnfrozen {\n bool refundVote = contributors[msg.sender].refundVote;\n require(vote != refundVote, \"Existing vote state is identical to vote value\");\n contributors[msg.sender].refundVote = vote;\n if (!vote) {\n amountVotingForRefund = amountVotingForRefund.sub(contributors[msg.sender].contributionAmount);\n } else {\n amountVotingForRefund = amountVotingForRefund.add(contributors[msg.sender].contributionAmount);\n }\n }\n\n function refund() public onlyUnfrozen {\n bool callerIsTrustee = isCallerTrustee();\n bool crowdFundFailed = isFailed();\n bool majorityVotingToRefund = isMajorityVoting(amountVotingForRefund);\n require(callerIsTrustee || crowdFundFailed || majorityVotingToRefund, \"Required conditions for refund are not met\");\n if (callerIsTrustee) {\n freezeReason = FreezeReason.CALLER_IS_TRUSTEE;\n } else if (crowdFundFailed) {\n freezeReason = FreezeReason.CROWD_FUND_FAILED;\n } else {\n freezeReason = FreezeReason.MAJORITY_VOTING_TO_REFUND;\n }\n frozen = true;\n frozenBalance = address(this).balance;\n }\n\n // anyone can refund a contributor if a crowdfund has been frozen\n function withdraw(address refundAddress) public onlyFrozen {\n require(frozen, \"CrowdFund is not frozen\");\n bool isRefunded = contributors[refundAddress].refunded;\n require(!isRefunded, \"Specified address is already refunded\");\n contributors[refundAddress].refunded = true;\n uint contributionAmount = contributors[refundAddress].contributionAmount;\n uint amountToRefund = contributionAmount.mul(address(this).balance).div(frozenBalance);\n refundAddress.transfer(amountToRefund);\n emit Withdrawn(refundAddress, amountToRefund);\n }\n\n // it may be useful to selfdestruct in case funds were force deposited to the contract\n function destroy() public onlyTrustee onlyFrozen {\n for (uint i = 0; i < contributorList.length; i++) {\n address contributorAddress = contributorList[i];\n if (!contributors[contributorAddress].refunded) {\n revert(\"At least one contributor has not yet refunded\");\n }\n }\n selfdestruct(beneficiary);\n }\n\n function isMajorityVoting(uint valueVoting) public view returns (bool) {\n return valueVoting.mul(2) > amountRaised;\n }\n\n function isCallerTrustee() public view returns (bool) {\n for (uint i = 0; i < trustees.length; i++) {\n if (msg.sender == trustees[i]) {\n return true;\n }\n }\n return false;\n }\n\n function isFailed() public view returns (bool) {\n return now >= deadline && !isRaiseGoalReached;\n }\n\n function getContributorMilestoneVote(address contributorAddress, uint milestoneIndex) public view returns (bool) { \n return contributors[contributorAddress].milestoneNoVotes[milestoneIndex];\n }\n\n function getContributorContributionAmount(address contributorAddress) public view returns (uint) {\n return contributors[contributorAddress].contributionAmount;\n }\n\n function getFreezeReason() public view returns (uint) {\n return uint(freezeReason);\n }\n\n modifier onlyFrozen() {\n require(frozen, \"CrowdFund is not frozen\");\n _;\n }\n\n modifier onlyUnfrozen() {\n require(!frozen, \"CrowdFund is frozen\");\n _;\n }\n\n modifier onlyRaised() {\n require(isRaiseGoalReached, \"Raise goal is not reached\");\n _;\n }\n\n modifier onlyOnGoing() {\n require(now <= deadline && !isRaiseGoalReached, \"CrowdFund is not ongoing\");\n _;\n }\n\n modifier onlyContributor() {\n require(contributors[msg.sender].contributionAmount != 0, \"Caller is not a contributor\");\n _;\n }\n\n modifier onlyTrustee() {\n require(isCallerTrustee(), \"Caller is not a trustee\");\n _;\n }\n\n}\n", + "sourcePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFund.sol", "ast": { - "absolutePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFund.sol", + "absolutePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFund.sol", "exportedSymbols": { "CrowdFund": [ - 1080 + 1076 ] }, - "id": 1081, + "id": 1077, "nodeType": "SourceUnit", "nodes": [ { @@ -557,8 +557,8 @@ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 1081, - "sourceUnit": 1233, + "scope": 1077, + "sourceUnit": 1229, "src": "25:59:0", "symbolAliases": [], "unitAlias": "" @@ -569,9 +569,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1080, + "id": 1076, "linearizedBaseContracts": [ - 1080 + 1076 ], "name": "CrowdFund", "nodeType": "ContractDefinition", @@ -583,10 +583,10 @@ "id": 3, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1232, + "referencedDeclaration": 1228, "src": "118:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1232", + "typeIdentifier": "t_contract$_SafeMath_$1228", "typeString": "library SafeMath" } }, @@ -635,7 +635,7 @@ "id": 11, "name": "freezeReason", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "264:25:0", "stateVariable": true, "storageLocation": "default", @@ -769,7 +769,7 @@ ], "name": "Milestone", "nodeType": "StructDefinition", - "scope": 1080, + "scope": 1076, "src": "296:144:0", "visibility": "public" }, @@ -894,7 +894,7 @@ ], "name": "Contributor", "nodeType": "StructDefinition", - "scope": 1080, + "scope": 1076, "src": "446:197:0", "visibility": "public" }, @@ -1041,7 +1041,7 @@ "id": 44, "name": "frozen", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "776:18:0", "stateVariable": true, "storageLocation": "default", @@ -1067,7 +1067,7 @@ "id": 46, "name": "isRaiseGoalReached", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "800:30:0", "stateVariable": true, "storageLocation": "default", @@ -1093,7 +1093,7 @@ "id": 48, "name": "immediateFirstMilestonePayout", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "836:41:0", "stateVariable": true, "storageLocation": "default", @@ -1119,7 +1119,7 @@ "id": 50, "name": "milestoneVotingPeriod", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "883:33:0", "stateVariable": true, "storageLocation": "default", @@ -1145,7 +1145,7 @@ "id": 52, "name": "deadline", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "922:20:0", "stateVariable": true, "storageLocation": "default", @@ -1171,7 +1171,7 @@ "id": 54, "name": "raiseGoal", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "948:21:0", "stateVariable": true, "storageLocation": "default", @@ -1197,7 +1197,7 @@ "id": 56, "name": "amountRaised", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "975:24:0", "stateVariable": true, "storageLocation": "default", @@ -1223,7 +1223,7 @@ "id": 58, "name": "frozenBalance", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1005:25:0", "stateVariable": true, "storageLocation": "default", @@ -1249,7 +1249,7 @@ "id": 60, "name": "minimumContributionAmount", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1036:37:0", "stateVariable": true, "storageLocation": "default", @@ -1275,7 +1275,7 @@ "id": 62, "name": "amountVotingForRefund", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1079:33:0", "stateVariable": true, "storageLocation": "default", @@ -1301,7 +1301,7 @@ "id": 64, "name": "beneficiary", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1118:26:0", "stateVariable": true, "storageLocation": "default", @@ -1327,7 +1327,7 @@ "id": 68, "name": "contributors", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1150:51:0", "stateVariable": true, "storageLocation": "default", @@ -1374,7 +1374,7 @@ "id": 71, "name": "contributorList", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1207:32:0", "stateVariable": true, "storageLocation": "default", @@ -1410,7 +1410,7 @@ "id": 74, "name": "trustees", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1302:25:0", "stateVariable": true, "storageLocation": "default", @@ -1446,7 +1446,7 @@ "id": 77, "name": "milestones", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1401:29:0", "stateVariable": true, "storageLocation": "default", @@ -1573,10 +1573,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "1689:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1790,10 +1790,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "1767:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2007,10 +2007,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "1894:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2259,10 +2259,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "2338:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2354,7 +2354,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "2440:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2783,10 +2783,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "2713:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3040,7 +3040,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "3026:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3600,7 +3600,7 @@ "parameters": [], "src": "1679:0:0" }, - "scope": 1080, + "scope": 1076, "src": "1437:1931:0", "stateMutability": "nonpayable", "superFunction": null, @@ -3656,7 +3656,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "3521:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3705,7 +3705,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "3504:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -3812,10 +3812,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "3541:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3892,7 +3892,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4076:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4101,10 +4101,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "4186:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4167,7 +4167,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4393:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4278,7 +4278,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4776:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4337,7 +4337,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4857:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4392,7 +4392,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4822:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4445,7 +4445,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "4809:47:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4518,7 +4518,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4457:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4563,7 +4563,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4521:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4761,7 +4761,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4713:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5005,7 +5005,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "5033:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5034,7 +5034,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "5045:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5113,7 +5113,7 @@ "name": "onlyOnGoing", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1054, + "referencedDeclaration": 1050, "src": "3411:11:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -5132,7 +5132,7 @@ "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 1027, "src": "3423:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -5158,7 +5158,7 @@ "parameters": [], "src": "3436:0:0" }, - "scope": 1080, + "scope": 1076, "src": "3374:1688:0", "stateMutability": "payable", "superFunction": null, @@ -5370,7 +5370,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "5301:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5490,7 +5490,7 @@ "name": "isMajorityVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, + "referencedDeclaration": 924, "src": "5343:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", @@ -5581,10 +5581,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "5460:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6151,10 +6151,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "5721:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6446,7 +6446,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, + "referencedDeclaration": 1169, "src": "6660:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -6481,7 +6481,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "6652:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6495,7 +6495,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "6652:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -6721,7 +6721,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "6326:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6735,7 +6735,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "6326:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -6893,7 +6893,7 @@ "name": "onlyTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, + "referencedDeclaration": 1075, "src": "5120:11:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -6912,7 +6912,7 @@ "name": "onlyRaised", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, + "referencedDeclaration": 1036, "src": "5132:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -6931,7 +6931,7 @@ "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 1027, "src": "5143:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -6984,7 +6984,7 @@ "parameters": [], "src": "5156:0:0" }, - "scope": 1080, + "scope": 1076, "src": "5068:1638:0", "stateMutability": "nonpayable", "superFunction": null, @@ -6992,9 +6992,9 @@ }, { "body": { - "id": 591, + "id": 589, "nodeType": "Block", - "src": "6811:940:0", + "src": "6811:930:0", "statements": [ { "assignments": [ @@ -7006,7 +7006,7 @@ "id": 494, "name": "existingMilestoneNoVote", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "6821:28:0", "stateVariable": false, "storageLocation": "default", @@ -7057,7 +7057,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "6865:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7214,10 +7214,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "6910:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -7252,7 +7252,7 @@ "id": 511, "name": "milestoneVotingStarted", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "7017:27:0", "stateVariable": false, "storageLocation": "default", @@ -7381,7 +7381,7 @@ "id": 520, "name": "votePeriodHasEnded", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "7104:23:0", "stateVariable": false, "storageLocation": "default", @@ -7479,7 +7479,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "7177:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7505,7 +7505,7 @@ "id": 529, "name": "onGoingVote", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "7190:16:0", "stateVariable": false, "storageLocation": "default", @@ -7643,10 +7643,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "7264:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -7707,7 +7707,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "7340:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7834,277 +7834,258 @@ } }, "falseBody": { - "condition": { - "argumentTypes": null, - "id": 570, - "name": "vote", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "7576:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 589, - "nodeType": "IfStatement", - "src": "7572:173:0", - "trueBody": { - "id": 588, - "nodeType": "Block", - "src": "7582:163:0", - "statements": [ - { - "expression": { + "id": 587, + "nodeType": "Block", + "src": "7572:163:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "argumentTypes": null, - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { + "expression": { "argumentTypes": null, - "expression": { + "baseExpression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 571, - "name": "milestones", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "7596:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", - "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" - } - }, - "id": 573, - "indexExpression": { - "argumentTypes": null, - "id": 572, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 482, - "src": "7607:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7596:17:0", + "id": 570, + "name": "milestones", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "7586:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Milestone_$20_storage", - "typeString": "struct CrowdFund.Milestone storage ref" + "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", + "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" + } + }, + "id": 572, + "indexExpression": { + "argumentTypes": null, + "id": 571, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 482, + "src": "7597:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 574, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "memberName": "amountVotingAgainstPayout", - "nodeType": "MemberAccess", - "referencedDeclaration": 15, - "src": "7596:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 580, - "name": "contributors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68, - "src": "7690:12:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", - "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" - } - }, - "id": 583, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 581, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "7703:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7703:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7690:24:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Contributor_$30_storage", - "typeString": "struct CrowdFund.Contributor storage ref" - } - }, - "id": 584, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "contributionAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "7690:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 575, - "name": "milestones", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "7642:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", - "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" - } - }, - "id": 577, - "indexExpression": { - "argumentTypes": null, - "id": 576, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 482, - "src": "7653:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7642:17:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Milestone_$20_storage", - "typeString": "struct CrowdFund.Milestone storage ref" - } - }, - "id": 578, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountVotingAgainstPayout", - "nodeType": "MemberAccess", - "referencedDeclaration": 15, - "src": "7642:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1231, - "src": "7642:47:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7642:92:0", + "nodeType": "IndexAccess", + "src": "7586:17:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Milestone_$20_storage", + "typeString": "struct CrowdFund.Milestone storage ref" } }, - "src": "7596:138:0", + "id": 573, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amountVotingAgainstPayout", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "7586:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 587, - "nodeType": "ExpressionStatement", - "src": "7596:138:0" - } - ] - } + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 579, + "name": "contributors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "7680:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", + "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" + } + }, + "id": 582, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 580, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1243, + "src": "7693:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7693:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7680:24:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Contributor_$30_storage", + "typeString": "struct CrowdFund.Contributor storage ref" + } + }, + "id": 583, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contributionAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "7680:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 574, + "name": "milestones", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "7632:10:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", + "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" + } + }, + "id": 576, + "indexExpression": { + "argumentTypes": null, + "id": 575, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 482, + "src": "7643:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7632:17:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Milestone_$20_storage", + "typeString": "struct CrowdFund.Milestone storage ref" + } + }, + "id": 577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amountVotingAgainstPayout", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "7632:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1227, + "src": "7632:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7632:92:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7586:138:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 586, + "nodeType": "ExpressionStatement", + "src": "7586:138:0" + } + ] }, - "id": 590, + "id": 588, "nodeType": "IfStatement", - "src": "7392:353:0", + "src": "7392:343:0", "trueBody": { "id": 569, "nodeType": "Block", @@ -8205,7 +8186,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "7524:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8322,7 +8303,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1207, + "referencedDeclaration": 1203, "src": "7463:47:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -8359,7 +8340,7 @@ ] }, "documentation": null, - "id": 592, + "id": 590, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8373,7 +8354,7 @@ "name": "onlyContributor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1069, + "referencedDeclaration": 1065, "src": "6771:15:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8392,7 +8373,7 @@ "name": "onlyRaised", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, + "referencedDeclaration": 1036, "src": "6787:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8411,7 +8392,7 @@ "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 1027, "src": "6798:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8433,7 +8414,7 @@ "id": 482, "name": "index", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "6741:10:0", "stateVariable": false, "storageLocation": "default", @@ -8459,7 +8440,7 @@ "id": 484, "name": "vote", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "6753:9:0", "stateVariable": false, "storageLocation": "default", @@ -8490,30 +8471,30 @@ "parameters": [], "src": "6811:0:0" }, - "scope": 1080, - "src": "6712:1039:0", + "scope": 1076, + "src": "6712:1029:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 678, + "id": 676, "nodeType": "Block", - "src": "7828:890:0", + "src": "7818:890:0", "statements": [ { "assignments": [ - 602 + 600 ], "declarations": [ { "constant": false, - "id": 602, + "id": 600, "name": "voteDeadlineHasPassed", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "7838:26:0", + "scope": 677, + "src": "7828:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8521,10 +8502,10 @@ "typeString": "bool" }, "typeName": { - "id": 601, + "id": 599, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "7838:4:0", + "src": "7828:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8534,14 +8515,14 @@ "visibility": "internal" } ], - "id": 609, + "id": 607, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 608, + "id": 606, "isConstant": false, "isLValue": false, "isPure": false, @@ -8552,26 +8533,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 603, + "id": 601, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "7867:10:0", + "src": "7857:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 605, + "id": 603, "indexExpression": { "argumentTypes": null, - "id": 604, + "id": 602, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "7878:5:0", + "referencedDeclaration": 592, + "src": "7868:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8582,13 +8563,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7867:17:0", + "src": "7857:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 606, + "id": 604, "isConstant": false, "isLValue": true, "isPure": false, @@ -8596,7 +8577,7 @@ "memberName": "payoutRequestVoteDeadline", "nodeType": "MemberAccess", "referencedDeclaration": 17, - "src": "7867:43:0", + "src": "7857:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8606,38 +8587,38 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 607, + "id": 605, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "7913:3:0", + "referencedDeclaration": 1245, + "src": "7903:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7867:49:0", + "src": "7857:49:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "7838:78:0" + "src": "7828:78:0" }, { "assignments": [ - 611 + 609 ], "declarations": [ { "constant": false, - "id": 611, + "id": 609, "name": "majorityVotedNo", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "7926:20:0", + "scope": 677, + "src": "7916:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8645,10 +8626,10 @@ "typeString": "bool" }, "typeName": { - "id": 610, + "id": 608, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "7926:4:0", + "src": "7916:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8658,7 +8639,7 @@ "visibility": "internal" } ], - "id": 618, + "id": 616, "initialValue": { "argumentTypes": null, "arguments": [ @@ -8668,26 +8649,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 613, + "id": 611, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "7966:10:0", + "src": "7956:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 615, + "id": 613, "indexExpression": { "argumentTypes": null, - "id": 614, + "id": 612, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "7977:5:0", + "referencedDeclaration": 592, + "src": "7967:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8698,13 +8679,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7966:17:0", + "src": "7956:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 616, + "id": 614, "isConstant": false, "isLValue": true, "isPure": false, @@ -8712,7 +8693,7 @@ "memberName": "amountVotingAgainstPayout", "nodeType": "MemberAccess", "referencedDeclaration": 15, - "src": "7966:43:0", + "src": "7956:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8726,18 +8707,18 @@ "typeString": "uint256" } ], - "id": 612, + "id": 610, "name": "isMajorityVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "7949:16:0", + "referencedDeclaration": 924, + "src": "7939:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 617, + "id": 615, "isConstant": false, "isLValue": false, "isPure": false, @@ -8745,27 +8726,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7949:61:0", + "src": "7939:61:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "7926:84:0" + "src": "7916:84:0" }, { "assignments": [ - 620 + 618 ], "declarations": [ { "constant": false, - "id": 620, + "id": 618, "name": "milestoneAlreadyPaid", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "8020:25:0", + "scope": 677, + "src": "8010:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8773,10 +8754,10 @@ "typeString": "bool" }, "typeName": { - "id": 619, + "id": 617, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "8020:4:0", + "src": "8010:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8786,33 +8767,33 @@ "visibility": "internal" } ], - "id": 625, + "id": 623, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 621, + "id": 619, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8048:10:0", + "src": "8038:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 623, + "id": 621, "indexExpression": { "argumentTypes": null, - "id": 622, + "id": 620, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8059:5:0", + "referencedDeclaration": 592, + "src": "8049:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8823,13 +8804,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8048:17:0", + "src": "8038:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 624, + "id": 622, "isConstant": false, "isLValue": true, "isPure": false, @@ -8837,14 +8818,14 @@ "memberName": "paid", "nodeType": "MemberAccess", "referencedDeclaration": 19, - "src": "8048:22:0", + "src": "8038:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "8020:50:0" + "src": "8010:50:0" }, { "condition": { @@ -8853,7 +8834,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 632, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -8864,19 +8845,19 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 629, + "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 626, + "id": 624, "name": "voteDeadlineHasPassed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 602, - "src": "8084:21:0", + "referencedDeclaration": 600, + "src": "8074:21:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8886,7 +8867,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 628, + "id": 626, "isConstant": false, "isLValue": false, "isPure": false, @@ -8894,15 +8875,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "8109:16:0", + "src": "8099:16:0", "subExpression": { "argumentTypes": null, - "id": 627, + "id": 625, "name": "majorityVotedNo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, - "src": "8110:15:0", + "referencedDeclaration": 609, + "src": "8100:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8913,7 +8894,7 @@ "typeString": "bool" } }, - "src": "8084:41:0", + "src": "8074:41:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8923,7 +8904,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 631, + "id": 629, "isConstant": false, "isLValue": false, "isPure": false, @@ -8931,15 +8912,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "8129:21:0", + "src": "8119:21:0", "subExpression": { "argumentTypes": null, - "id": 630, + "id": 628, "name": "milestoneAlreadyPaid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "8130:20:0", + "referencedDeclaration": 618, + "src": "8120:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8950,16 +8931,16 @@ "typeString": "bool" } }, - "src": "8084:66:0", + "src": "8074:66:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 676, + "id": 674, "nodeType": "Block", - "src": "8639:73:0", + "src": "8629:73:0", "statements": [ { "expression": { @@ -8968,14 +8949,14 @@ { "argumentTypes": null, "hexValue": "726571756972656420636f6e646974696f6e732077657265206e6f7420736174697366696564", - "id": 673, + "id": 671, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8660:40:0", + "src": "8650:40:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c944a403407a4b450cdf033de02e1e093564ed6120fdd470c5daee653f2d6a87", @@ -8991,21 +8972,21 @@ "typeString": "literal_string \"required conditions were not satisfied\"" } ], - "id": 672, + "id": 670, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 1252, - 1253 + 1248, + 1249 ], - "referencedDeclaration": 1253, - "src": "8653:6:0", + "referencedDeclaration": 1249, + "src": "8643:6:0", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 674, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -9013,30 +8994,30 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8653:48:0", + "src": "8643:48:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 675, + "id": 673, "nodeType": "ExpressionStatement", - "src": "8653:48:0" + "src": "8643:48:0" } ] }, - "id": 677, + "id": 675, "nodeType": "IfStatement", - "src": "8080:632:0", + "src": "8070:632:0", "trueBody": { - "id": 671, + "id": 669, "nodeType": "Block", - "src": "8152:481:0", + "src": "8142:481:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 638, + "id": 636, "isConstant": false, "isLValue": false, "isPure": false, @@ -9047,26 +9028,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 633, + "id": 631, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8166:10:0", + "src": "8156:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 635, + "id": 633, "indexExpression": { "argumentTypes": null, - "id": 634, + "id": 632, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8177:5:0", + "referencedDeclaration": 592, + "src": "8167:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9077,13 +9058,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8166:17:0", + "src": "8156:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 636, + "id": 634, "isConstant": false, "isLValue": true, "isPure": false, @@ -9091,7 +9072,7 @@ "memberName": "paid", "nodeType": "MemberAccess", "referencedDeclaration": 19, - "src": "8166:22:0", + "src": "8156:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9102,14 +9083,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 637, + "id": 635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "8191:4:0", + "src": "8181:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -9117,28 +9098,28 @@ }, "value": "true" }, - "src": "8166:29:0", + "src": "8156:29:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 639, + "id": 637, "nodeType": "ExpressionStatement", - "src": "8166:29:0" + "src": "8156:29:0" }, { "assignments": [ - 641 + 639 ], "declarations": [ { "constant": false, - "id": 641, + "id": 639, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "8209:11:0", + "scope": 677, + "src": "8199:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9146,10 +9127,10 @@ "typeString": "uint256" }, "typeName": { - "id": 640, + "id": 638, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "8209:4:0", + "src": "8199:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9159,33 +9140,33 @@ "visibility": "internal" } ], - "id": 646, + "id": 644, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 642, + "id": 640, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8223:10:0", + "src": "8213:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 644, + "id": 642, "indexExpression": { "argumentTypes": null, - "id": 643, + "id": 641, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8234:5:0", + "referencedDeclaration": 592, + "src": "8224:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9196,13 +9177,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8223:17:0", + "src": "8213:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 645, + "id": 643, "isConstant": false, "isLValue": true, "isPure": false, @@ -9210,14 +9191,14 @@ "memberName": "amount", "nodeType": "MemberAccess", "referencedDeclaration": 13, - "src": "8223:24:0", + "src": "8213:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "8209:38:0" + "src": "8199:38:0" }, { "expression": { @@ -9225,12 +9206,12 @@ "arguments": [ { "argumentTypes": null, - "id": 650, + "id": 648, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "8282:6:0", + "referencedDeclaration": 639, + "src": "8272:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9246,18 +9227,18 @@ ], "expression": { "argumentTypes": null, - "id": 647, + "id": 645, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "8261:11:0", + "src": "8251:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 649, + "id": 647, "isConstant": false, "isLValue": false, "isPure": false, @@ -9265,13 +9246,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8261:20:0", + "src": "8251:20:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 651, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -9279,15 +9260,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8261:28:0", + "src": "8251:28:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 652, + "id": 650, "nodeType": "ExpressionStatement", - "src": "8261:28:0" + "src": "8251:28:0" }, { "eventCall": { @@ -9295,12 +9276,12 @@ "arguments": [ { "argumentTypes": null, - "id": 654, + "id": 652, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "8318:11:0", + "src": "8308:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9308,12 +9289,12 @@ }, { "argumentTypes": null, - "id": 655, + "id": 653, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "8331:6:0", + "referencedDeclaration": 639, + "src": "8321:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9331,18 +9312,18 @@ "typeString": "uint256" } ], - "id": 653, + "id": 651, "name": "Withdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, - "src": "8308:9:0", + "src": "8298:9:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 656, + "id": 654, "isConstant": false, "isLValue": false, "isPure": false, @@ -9350,15 +9331,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8308:30:0", + "src": "8298:30:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 657, + "id": 655, "nodeType": "EmitStatement", - "src": "8303:35:0" + "src": "8293:35:0" }, { "condition": { @@ -9367,7 +9348,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 664, + "id": 662, "isConstant": false, "isLValue": false, "isPure": false, @@ -9377,12 +9358,12 @@ "arguments": [ { "argumentTypes": null, - "id": 661, + "id": 659, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8430:5:0", + "referencedDeclaration": 592, + "src": "8420:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9400,18 +9381,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 658, + "id": 656, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8408:10:0", + "src": "8398:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 659, + "id": 657, "isConstant": false, "isLValue": true, "isPure": false, @@ -9419,27 +9400,27 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8408:17:0", + "src": "8398:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 660, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1207, - "src": "8408:21:0", + "referencedDeclaration": 1203, + "src": "8398:21:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 662, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, @@ -9447,7 +9428,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8408:28:0", + "src": "8398:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9458,14 +9439,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 663, + "id": 661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8440:1:0", + "src": "8430:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -9473,20 +9454,20 @@ }, "value": "1" }, - "src": "8408:33:0", + "src": "8398:33:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 670, + "id": 668, "nodeType": "IfStatement", - "src": "8404:219:0", + "src": "8394:219:0", "trueBody": { - "id": 669, + "id": 667, "nodeType": "Block", - "src": "8443:180:0", + "src": "8433:180:0", "statements": [ { "expression": { @@ -9494,12 +9475,12 @@ "arguments": [ { "argumentTypes": null, - "id": 666, + "id": 664, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "8596:11:0", + "src": "8586:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9513,18 +9494,18 @@ "typeString": "address" } ], - "id": 665, + "id": 663, "name": "selfdestruct", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1255, - "src": "8583:12:0", + "referencedDeclaration": 1251, + "src": "8573:12:0", "typeDescriptions": { "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 667, + "id": 665, "isConstant": false, "isLValue": false, "isPure": false, @@ -9532,15 +9513,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8583:25:0", + "src": "8573:25:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 668, + "id": 666, "nodeType": "ExpressionStatement", - "src": "8583:25:0" + "src": "8573:25:0" } ] } @@ -9551,63 +9532,63 @@ ] }, "documentation": null, - "id": 679, + "id": 677, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 595, + "modifierName": { + "argumentTypes": null, + "id": 594, + "name": "onlyRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1036, + "src": "7794:10:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7794:10:0" + }, { "arguments": null, "id": 597, "modifierName": { "argumentTypes": null, "id": 596, - "name": "onlyRaised", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "7804:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7804:10:0" - }, - { - "arguments": null, - "id": 599, - "modifierName": { - "argumentTypes": null, - "id": 598, "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, - "src": "7815:12:0", + "referencedDeclaration": 1027, + "src": "7805:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "7815:12:0" + "src": "7805:12:0" } ], "name": "payMilestonePayout", "nodeType": "FunctionDefinition", "parameters": { - "id": 595, + "id": 593, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 594, + "id": 592, "name": "index", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "7785:10:0", + "scope": 677, + "src": "7775:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9615,10 +9596,10 @@ "typeString": "uint256" }, "typeName": { - "id": 593, + "id": 591, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "7785:4:0", + "src": "7775:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9628,39 +9609,39 @@ "visibility": "internal" } ], - "src": "7784:12:0" + "src": "7774:12:0" }, "payable": false, "returnParameters": { - "id": 600, + "id": 598, "nodeType": "ParameterList", "parameters": [], - "src": "7828:0:0" + "src": "7818:0:0" }, - "scope": 1080, - "src": "7757:961:0", + "scope": 1076, + "src": "7747:961:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 742, + "id": 738, "nodeType": "Block", - "src": "8802:491:0", + "src": "8792:473:0", "statements": [ { "assignments": [ - 691 + 689 ], "declarations": [ { "constant": false, - "id": 691, + "id": 689, "name": "refundVote", "nodeType": "VariableDeclaration", - "scope": 743, - "src": "8812:15:0", + "scope": 739, + "src": "8802:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9668,10 +9649,10 @@ "typeString": "bool" }, "typeName": { - "id": 690, + "id": 688, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "8812:4:0", + "src": "8802:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9681,41 +9662,41 @@ "visibility": "internal" } ], - "id": 697, + "id": 695, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 692, + "id": 690, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "8830:12:0", + "src": "8820:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 695, + "id": 693, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 693, + "id": 691, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "8843:3:0", + "referencedDeclaration": 1243, + "src": "8833:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 694, + "id": 692, "isConstant": false, "isLValue": false, "isPure": false, @@ -9723,7 +9704,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8843:10:0", + "src": "8833:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9734,13 +9715,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8830:24:0", + "src": "8820:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 696, + "id": 694, "isConstant": false, "isLValue": true, "isPure": false, @@ -9748,14 +9729,14 @@ "memberName": "refundVote", "nodeType": "MemberAccess", "referencedDeclaration": 27, - "src": "8830:35:0", + "src": "8820:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "8812:53:0" + "src": "8802:53:0" }, { "expression": { @@ -9767,19 +9748,19 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 701, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 699, + "id": 697, "name": "vote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "8883:4:0", + "referencedDeclaration": 679, + "src": "8873:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9789,18 +9770,18 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 700, + "id": 698, "name": "refundVote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 691, - "src": "8891:10:0", + "referencedDeclaration": 689, + "src": "8881:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "8883:18:0", + "src": "8873:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9809,14 +9790,14 @@ { "argumentTypes": null, "hexValue": "4578697374696e6720766f7465207374617465206973206964656e746963616c20746f20766f74652076616c7565", - "id": 702, + "id": 700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8903:48:0", + "src": "8893:48:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_83d9b841f406ef52e32942228e28c13fcdb47e5fa9512f22f335b7955cb71cb5", @@ -9836,21 +9817,21 @@ "typeString": "literal_string \"Existing vote state is identical to vote value\"" } ], - "id": 698, + "id": 696, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "8875:7:0", + "referencedDeclaration": 1247, + "src": "8865:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 703, + "id": 701, "isConstant": false, "isLValue": false, "isPure": false, @@ -9858,20 +9839,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8875:77:0", + "src": "8865:77:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 704, + "id": 702, "nodeType": "ExpressionStatement", - "src": "8875:77:0" + "src": "8865:77:0" }, { "expression": { "argumentTypes": null, - "id": 711, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, @@ -9882,34 +9863,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 705, + "id": 703, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "8962:12:0", + "src": "8952:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 708, + "id": 706, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 706, + "id": 704, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "8975:3:0", + "referencedDeclaration": 1243, + "src": "8965:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 707, + "id": 705, "isConstant": false, "isLValue": false, "isPure": false, @@ -9917,7 +9898,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8975:10:0", + "src": "8965:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9928,13 +9909,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8962:24:0", + "src": "8952:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 709, + "id": 707, "isConstant": false, "isLValue": true, "isPure": false, @@ -9942,7 +9923,7 @@ "memberName": "refundVote", "nodeType": "MemberAccess", "referencedDeclaration": 27, - "src": "8962:35:0", + "src": "8952:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9952,31 +9933,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 710, + "id": 708, "name": "vote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "9000:4:0", + "referencedDeclaration": 679, + "src": "8990:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "8962:42:0", + "src": "8952:42:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 712, + "id": 710, "nodeType": "ExpressionStatement", - "src": "8962:42:0" + "src": "8952:42:0" }, { "condition": { "argumentTypes": null, - "id": 714, + "id": 712, "isConstant": false, "isLValue": false, "isPure": false, @@ -9984,15 +9965,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "9018:5:0", + "src": "9008:5:0", "subExpression": { "argumentTypes": null, - "id": 713, + "id": 711, "name": "vote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "9019:4:0", + "referencedDeclaration": 679, + "src": "9009:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10004,212 +9985,26 @@ } }, "falseBody": { - "condition": { - "argumentTypes": null, - "id": 727, - "name": "vote", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "9162:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 740, - "nodeType": "IfStatement", - "src": "9158:129:0", - "trueBody": { - "id": 739, - "nodeType": "Block", - "src": "9168:119:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 728, - "name": "amountVotingForRefund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62, - "src": "9182:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 731, - "name": "contributors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68, - "src": "9232:12:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", - "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" - } - }, - "id": 734, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 732, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "9245:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 733, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9245:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9232:24:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Contributor_$30_storage", - "typeString": "struct CrowdFund.Contributor storage ref" - } - }, - "id": 735, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "contributionAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "9232:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 729, - "name": "amountVotingForRefund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62, - "src": "9206:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1231, - "src": "9206:25:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9206:70:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9182:94:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 738, - "nodeType": "ExpressionStatement", - "src": "9182:94:0" - } - ] - } - }, - "id": 741, - "nodeType": "IfStatement", - "src": "9014:273:0", - "trueBody": { - "id": 726, + "id": 736, "nodeType": "Block", - "src": "9025:119:0", + "src": "9140:119:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 724, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 715, + "id": 725, "name": "amountVotingForRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, - "src": "9039:21:0", + "src": "9154:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10226,34 +10021,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 718, + "id": 728, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "9089:12:0", + "src": "9204:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 721, + "id": 731, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 719, + "id": 729, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "9102:3:0", + "referencedDeclaration": 1243, + "src": "9217:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 720, + "id": 730, "isConstant": false, "isLValue": false, "isPure": false, @@ -10261,7 +10056,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9102:10:0", + "src": "9217:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10272,13 +10067,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "9089:24:0", + "src": "9204:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 722, + "id": 732, "isConstant": false, "isLValue": true, "isPure": false, @@ -10286,7 +10081,7 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "9089:43:0", + "src": "9204:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10302,32 +10097,32 @@ ], "expression": { "argumentTypes": null, - "id": 716, + "id": 726, "name": "amountVotingForRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, - "src": "9063:21:0", + "src": "9178:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 717, + "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "sub", + "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1207, - "src": "9063:25:0", + "referencedDeclaration": 1227, + "src": "9178:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 723, + "id": 733, "isConstant": false, "isLValue": false, "isPure": false, @@ -10335,21 +10130,188 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9063:70:0", + "src": "9178:70:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9039:94:0", + "src": "9154:94:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 725, + "id": 735, "nodeType": "ExpressionStatement", - "src": "9039:94:0" + "src": "9154:94:0" + } + ] + }, + "id": 737, + "nodeType": "IfStatement", + "src": "9004:255:0", + "trueBody": { + "id": 724, + "nodeType": "Block", + "src": "9015:119:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 713, + "name": "amountVotingForRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "9029:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 716, + "name": "contributors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "9079:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", + "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" + } + }, + "id": 719, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 717, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1243, + "src": "9092:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9092:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9079:24:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Contributor_$30_storage", + "typeString": "struct CrowdFund.Contributor storage ref" + } + }, + "id": 720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contributionAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "9079:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 714, + "name": "amountVotingForRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "9053:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 1203, + "src": "9053:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9053:70:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9029:94:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 723, + "nodeType": "ExpressionStatement", + "src": "9029:94:0" } ] } @@ -10357,29 +10319,48 @@ ] }, "documentation": null, - "id": 743, + "id": 739, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 684, + "id": 682, "modifierName": { "argumentTypes": null, - "id": 683, + "id": 681, "name": "onlyContributor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1069, - "src": "8762:15:0", + "referencedDeclaration": 1065, + "src": "8752:15:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "8762:15:0" + "src": "8752:15:0" + }, + { + "arguments": null, + "id": 684, + "modifierName": { + "argumentTypes": null, + "id": 683, + "name": "onlyRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1036, + "src": "8768:10:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8768:10:0" }, { "arguments": null, @@ -10387,52 +10368,33 @@ "modifierName": { "argumentTypes": null, "id": 685, - "name": "onlyRaised", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "8778:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "8778:10:0" - }, - { - "arguments": null, - "id": 688, - "modifierName": { - "argumentTypes": null, - "id": 687, "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, - "src": "8789:12:0", + "referencedDeclaration": 1027, + "src": "8779:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "8789:12:0" + "src": "8779:12:0" } ], "name": "voteRefund", "nodeType": "FunctionDefinition", "parameters": { - "id": 682, + "id": 680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 681, + "id": 679, "name": "vote", "nodeType": "VariableDeclaration", - "scope": 743, - "src": "8744:9:0", + "scope": 739, + "src": "8734:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10440,10 +10402,10 @@ "typeString": "bool" }, "typeName": { - "id": 680, + "id": 678, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "8744:4:0", + "src": "8734:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10453,39 +10415,39 @@ "visibility": "internal" } ], - "src": "8743:11:0" + "src": "8733:11:0" }, "payable": false, "returnParameters": { - "id": 689, + "id": 687, "nodeType": "ParameterList", "parameters": [], - "src": "8802:0:0" + "src": "8792:0:0" }, - "scope": 1080, - "src": "8724:569:0", + "scope": 1076, + "src": "8714:551:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 806, + "id": 802, "nodeType": "Block", - "src": "9337:655:0", + "src": "9309:655:0", "statements": [ { "assignments": [ - 749 + 745 ], "declarations": [ { "constant": false, - "id": 749, + "id": 745, "name": "callerIsTrustee", "nodeType": "VariableDeclaration", - "scope": 807, - "src": "9347:20:0", + "scope": 803, + "src": "9319:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10493,10 +10455,10 @@ "typeString": "bool" }, "typeName": { - "id": 748, + "id": 744, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9347:4:0", + "src": "9319:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10506,24 +10468,24 @@ "visibility": "internal" } ], - "id": 752, + "id": 748, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 750, + "id": 746, "name": "isCallerTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "9370:15:0", + "referencedDeclaration": 955, + "src": "9342:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 751, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -10531,27 +10493,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9370:17:0", + "src": "9342:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "9347:40:0" + "src": "9319:40:0" }, { "assignments": [ - 754 + 750 ], "declarations": [ { "constant": false, - "id": 754, + "id": 750, "name": "crowdFundFailed", "nodeType": "VariableDeclaration", - "scope": 807, - "src": "9397:20:0", + "scope": 803, + "src": "9369:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10559,10 +10521,10 @@ "typeString": "bool" }, "typeName": { - "id": 753, + "id": 749, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9397:4:0", + "src": "9369:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10572,24 +10534,24 @@ "visibility": "internal" } ], - "id": 757, + "id": 753, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 755, + "id": 751, "name": "isFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "9420:8:0", + "referencedDeclaration": 968, + "src": "9392:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 756, + "id": 752, "isConstant": false, "isLValue": false, "isPure": false, @@ -10597,27 +10559,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9420:10:0", + "src": "9392:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "9397:33:0" + "src": "9369:33:0" }, { "assignments": [ - 759 + 755 ], "declarations": [ { "constant": false, - "id": 759, + "id": 755, "name": "majorityVotingToRefund", "nodeType": "VariableDeclaration", - "scope": 807, - "src": "9440:27:0", + "scope": 803, + "src": "9412:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10625,10 +10587,10 @@ "typeString": "bool" }, "typeName": { - "id": 758, + "id": 754, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9440:4:0", + "src": "9412:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10638,18 +10600,18 @@ "visibility": "internal" } ], - "id": 763, + "id": 759, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 761, + "id": 757, "name": "amountVotingForRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, - "src": "9487:21:0", + "src": "9459:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10663,18 +10625,18 @@ "typeString": "uint256" } ], - "id": 760, + "id": 756, "name": "isMajorityVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "9470:16:0", + "referencedDeclaration": 924, + "src": "9442:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 762, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, @@ -10682,14 +10644,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9470:39:0", + "src": "9442:39:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "9440:69:0" + "src": "9412:69:0" }, { "expression": { @@ -10701,7 +10663,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 769, + "id": 765, "isConstant": false, "isLValue": false, "isPure": false, @@ -10712,19 +10674,19 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 767, + "id": 763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 765, + "id": 761, "name": "callerIsTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "9527:15:0", + "referencedDeclaration": 745, + "src": "9499:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10734,18 +10696,18 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 766, + "id": 762, "name": "crowdFundFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, - "src": "9546:15:0", + "referencedDeclaration": 750, + "src": "9518:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "9527:34:0", + "src": "9499:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10755,18 +10717,18 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 768, + "id": 764, "name": "majorityVotingToRefund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "9565:22:0", + "referencedDeclaration": 755, + "src": "9537:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "9527:60:0", + "src": "9499:60:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10775,14 +10737,14 @@ { "argumentTypes": null, "hexValue": "526571756972656420636f6e646974696f6e7320666f7220726566756e6420617265206e6f74206d6574", - "id": 770, + "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9589:44:0", + "src": "9561:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1086fb0a245a80bddbec2bbf87c88d8fc142025bee989551e1ac5ccca15d31ff", @@ -10802,21 +10764,21 @@ "typeString": "literal_string \"Required conditions for refund are not met\"" } ], - "id": 764, + "id": 760, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "9519:7:0", + "referencedDeclaration": 1247, + "src": "9491:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 771, + "id": 767, "isConstant": false, "isLValue": false, "isPure": false, @@ -10824,25 +10786,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9519:115:0", + "src": "9491:115:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 772, + "id": 768, "nodeType": "ExpressionStatement", - "src": "9519:115:0" + "src": "9491:115:0" }, { "condition": { "argumentTypes": null, - "id": 773, + "id": 769, "name": "callerIsTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "9648:15:0", + "referencedDeclaration": 745, + "src": "9620:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10851,38 +10813,38 @@ "falseBody": { "condition": { "argumentTypes": null, - "id": 780, + "id": 776, "name": "crowdFundFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, - "src": "9745:15:0", + "referencedDeclaration": 750, + "src": "9717:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 792, + "id": 788, "nodeType": "Block", - "src": "9838:78:0", + "src": "9810:78:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 790, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 787, + "id": 783, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "9852:12:0", + "src": "9824:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -10894,18 +10856,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 788, + "id": 784, "name": "FreezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, - "src": "9867:12:0", + "src": "9839:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_FreezeReason_$9_$", "typeString": "type(enum CrowdFund.FreezeReason)" } }, - "id": 789, + "id": 785, "isConstant": false, "isLValue": false, "isPure": true, @@ -10913,48 +10875,48 @@ "memberName": "MAJORITY_VOTING_TO_REFUND", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9867:38:0", + "src": "9839:38:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "src": "9852:53:0", + "src": "9824:53:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "id": 791, + "id": 787, "nodeType": "ExpressionStatement", - "src": "9852:53:0" + "src": "9824:53:0" } ] }, - "id": 793, + "id": 789, "nodeType": "IfStatement", - "src": "9741:175:0", + "src": "9713:175:0", "trueBody": { - "id": 786, + "id": 782, "nodeType": "Block", - "src": "9762:70:0", + "src": "9734:70:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 784, + "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 781, + "id": 777, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "9776:12:0", + "src": "9748:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -10966,18 +10928,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 782, + "id": 778, "name": "FreezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, - "src": "9791:12:0", + "src": "9763:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_FreezeReason_$9_$", "typeString": "type(enum CrowdFund.FreezeReason)" } }, - "id": 783, + "id": 779, "isConstant": false, "isLValue": false, "isPure": true, @@ -10985,49 +10947,49 @@ "memberName": "CROWD_FUND_FAILED", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9791:30:0", + "src": "9763:30:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "src": "9776:45:0", + "src": "9748:45:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "id": 785, + "id": 781, "nodeType": "ExpressionStatement", - "src": "9776:45:0" + "src": "9748:45:0" } ] } }, - "id": 794, + "id": 790, "nodeType": "IfStatement", - "src": "9644:272:0", + "src": "9616:272:0", "trueBody": { - "id": 779, + "id": 775, "nodeType": "Block", - "src": "9665:70:0", + "src": "9637:70:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 777, + "id": 773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 774, + "id": 770, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "9679:12:0", + "src": "9651:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -11039,18 +11001,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 775, + "id": 771, "name": "FreezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, - "src": "9694:12:0", + "src": "9666:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_FreezeReason_$9_$", "typeString": "type(enum CrowdFund.FreezeReason)" } }, - "id": 776, + "id": 772, "isConstant": false, "isLValue": false, "isPure": true, @@ -11058,21 +11020,21 @@ "memberName": "CALLER_IS_TRUSTEE", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9694:30:0", + "src": "9666:30:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "src": "9679:45:0", + "src": "9651:45:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "id": 778, + "id": 774, "nodeType": "ExpressionStatement", - "src": "9679:45:0" + "src": "9651:45:0" } ] } @@ -11080,19 +11042,19 @@ { "expression": { "argumentTypes": null, - "id": 797, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 795, + "id": 791, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "9925:6:0", + "src": "9897:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11103,14 +11065,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 796, + "id": 792, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "9934:4:0", + "src": "9906:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11118,32 +11080,32 @@ }, "value": "true" }, - "src": "9925:13:0", + "src": "9897:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 798, + "id": 794, "nodeType": "ExpressionStatement", - "src": "9925:13:0" + "src": "9897:13:0" }, { "expression": { "argumentTypes": null, - "id": 804, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 799, + "id": 795, "name": "frozenBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 58, - "src": "9948:13:0", + "src": "9920:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11158,14 +11120,14 @@ "arguments": [ { "argumentTypes": null, - "id": 801, + "id": 797, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "9972:4:0", + "referencedDeclaration": 1258, + "src": "9944:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } } @@ -11173,24 +11135,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } ], - "id": 800, + "id": 796, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9964:7:0", + "src": "9936:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 802, + "id": 798, "isConstant": false, "isLValue": false, "isPure": false, @@ -11198,13 +11160,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9964:13:0", + "src": "9936:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 803, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -11212,76 +11174,76 @@ "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9964:21:0", + "src": "9936:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9948:37:0", + "src": "9920:37:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 805, + "id": 801, "nodeType": "ExpressionStatement", - "src": "9948:37:0" + "src": "9920:37:0" } ] }, "documentation": null, - "id": 807, + "id": 803, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 746, + "id": 742, "modifierName": { "argumentTypes": null, - "id": 745, + "id": 741, "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, - "src": "9324:12:0", + "referencedDeclaration": 1027, + "src": "9296:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "9324:12:0" + "src": "9296:12:0" } ], "name": "refund", "nodeType": "FunctionDefinition", "parameters": { - "id": 744, + "id": 740, "nodeType": "ParameterList", "parameters": [], - "src": "9314:2:0" + "src": "9286:2:0" }, "payable": false, "returnParameters": { - "id": 747, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "9337:0:0" + "src": "9309:0:0" }, - "scope": 1080, - "src": "9299:693:0", + "scope": 1076, + "src": "9271:693:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 870, + "id": 866, "nodeType": "Block", - "src": "10127:528:0", + "src": "10099:528:0", "statements": [ { "expression": { @@ -11289,12 +11251,12 @@ "arguments": [ { "argumentTypes": null, - "id": 815, + "id": 811, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "10145:6:0", + "src": "10117:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11303,14 +11265,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e64206973206e6f742066726f7a656e", - "id": 816, + "id": 812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10153:25:0", + "src": "10125:25:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_144124cc12823f56a1037eeced499cee1638a07fba8aa0ce757da7cf592192bf", @@ -11330,21 +11292,21 @@ "typeString": "literal_string \"CrowdFund is not frozen\"" } ], - "id": 814, + "id": 810, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "10137:7:0", + "referencedDeclaration": 1247, + "src": "10109:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 817, + "id": 813, "isConstant": false, "isLValue": false, "isPure": false, @@ -11352,28 +11314,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10137:42:0", + "src": "10109:42:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 818, + "id": 814, "nodeType": "ExpressionStatement", - "src": "10137:42:0" + "src": "10109:42:0" }, { "assignments": [ - 820 + 816 ], "declarations": [ { "constant": false, - "id": 820, + "id": 816, "name": "isRefunded", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10189:15:0", + "scope": 867, + "src": "10161:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11381,10 +11343,10 @@ "typeString": "bool" }, "typeName": { - "id": 819, + "id": 815, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "10189:4:0", + "src": "10161:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11394,33 +11356,33 @@ "visibility": "internal" } ], - "id": 825, + "id": 821, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 821, + "id": 817, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10207:12:0", + "src": "10179:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 823, + "id": 819, "indexExpression": { "argumentTypes": null, - "id": 822, + "id": 818, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10220:13:0", + "referencedDeclaration": 805, + "src": "10192:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11431,13 +11393,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10207:27:0", + "src": "10179:27:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 824, + "id": 820, "isConstant": false, "isLValue": true, "isPure": false, @@ -11445,14 +11407,14 @@ "memberName": "refunded", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "10207:36:0", + "src": "10179:36:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "10189:54:0" + "src": "10161:54:0" }, { "expression": { @@ -11460,7 +11422,7 @@ "arguments": [ { "argumentTypes": null, - "id": 828, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, @@ -11468,15 +11430,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "10261:11:0", + "src": "10233:11:0", "subExpression": { "argumentTypes": null, - "id": 827, + "id": 823, "name": "isRefunded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "10262:10:0", + "referencedDeclaration": 816, + "src": "10234:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11490,14 +11452,14 @@ { "argumentTypes": null, "hexValue": "537065636966696564206164647265737320697320616c726561647920726566756e646564", - "id": 829, + "id": 825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10274:39:0", + "src": "10246:39:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad918abf6ea38b3d8dd6fccfc0198c349db0339300085e3846f4b85c44350efa", @@ -11517,21 +11479,21 @@ "typeString": "literal_string \"Specified address is already refunded\"" } ], - "id": 826, + "id": 822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "10253:7:0", + "referencedDeclaration": 1247, + "src": "10225:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 830, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -11539,20 +11501,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10253:61:0", + "src": "10225:61:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 831, + "id": 827, "nodeType": "ExpressionStatement", - "src": "10253:61:0" + "src": "10225:61:0" }, { "expression": { "argumentTypes": null, - "id": 837, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -11563,26 +11525,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 832, + "id": 828, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10324:12:0", + "src": "10296:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 834, + "id": 830, "indexExpression": { "argumentTypes": null, - "id": 833, + "id": 829, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10337:13:0", + "referencedDeclaration": 805, + "src": "10309:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11593,13 +11555,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10324:27:0", + "src": "10296:27:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 835, + "id": 831, "isConstant": false, "isLValue": true, "isPure": false, @@ -11607,7 +11569,7 @@ "memberName": "refunded", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "10324:36:0", + "src": "10296:36:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11618,14 +11580,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 836, + "id": 832, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "10363:4:0", + "src": "10335:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -11633,28 +11595,28 @@ }, "value": "true" }, - "src": "10324:43:0", + "src": "10296:43:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 838, + "id": 834, "nodeType": "ExpressionStatement", - "src": "10324:43:0" + "src": "10296:43:0" }, { "assignments": [ - 840 + 836 ], "declarations": [ { "constant": false, - "id": 840, + "id": 836, "name": "contributionAmount", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10377:23:0", + "scope": 867, + "src": "10349:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11662,10 +11624,10 @@ "typeString": "uint256" }, "typeName": { - "id": 839, + "id": 835, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "10377:4:0", + "src": "10349:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11675,33 +11637,33 @@ "visibility": "internal" } ], - "id": 845, + "id": 841, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 841, + "id": 837, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10403:12:0", + "src": "10375:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 843, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 842, + "id": 838, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10416:13:0", + "referencedDeclaration": 805, + "src": "10388:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11712,13 +11674,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10403:27:0", + "src": "10375:27:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 844, + "id": 840, "isConstant": false, "isLValue": true, "isPure": false, @@ -11726,27 +11688,27 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "10403:46:0", + "src": "10375:46:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "10377:72:0" + "src": "10349:72:0" }, { "assignments": [ - 847 + 843 ], "declarations": [ { "constant": false, - "id": 847, + "id": 843, "name": "amountToRefund", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10459:19:0", + "scope": 867, + "src": "10431:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11754,10 +11716,10 @@ "typeString": "uint256" }, "typeName": { - "id": 846, + "id": 842, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "10459:4:0", + "src": "10431:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11767,18 +11729,18 @@ "visibility": "internal" } ], - "id": 858, + "id": 854, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 856, + "id": 852, "name": "frozenBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 58, - "src": "10531:13:0", + "src": "10503:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11802,14 +11764,14 @@ "arguments": [ { "argumentTypes": null, - "id": 851, + "id": 847, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "10512:4:0", + "referencedDeclaration": 1258, + "src": "10484:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } } @@ -11817,24 +11779,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } ], - "id": 850, + "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10504:7:0", + "src": "10476:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 852, + "id": 848, "isConstant": false, "isLValue": false, "isPure": false, @@ -11842,13 +11804,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10504:13:0", + "src": "10476:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 853, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, @@ -11856,7 +11818,7 @@ "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "10504:21:0", + "src": "10476:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11872,32 +11834,32 @@ ], "expression": { "argumentTypes": null, - "id": 848, + "id": 844, "name": "contributionAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 840, - "src": "10481:18:0", + "referencedDeclaration": 836, + "src": "10453:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 849, + "id": 845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "10481:22:0", + "referencedDeclaration": 1169, + "src": "10453:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 854, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, @@ -11905,27 +11867,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10481:45:0", + "src": "10453:45:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 855, + "id": 851, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 1187, - "src": "10481:49:0", + "referencedDeclaration": 1183, + "src": "10453:49:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 857, + "id": 853, "isConstant": false, "isLValue": false, "isPure": false, @@ -11933,14 +11895,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10481:64:0", + "src": "10453:64:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "10459:86:0" + "src": "10431:86:0" }, { "expression": { @@ -11948,12 +11910,12 @@ "arguments": [ { "argumentTypes": null, - "id": 862, + "id": 858, "name": "amountToRefund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "10578:14:0", + "referencedDeclaration": 843, + "src": "10550:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11969,18 +11931,18 @@ ], "expression": { "argumentTypes": null, - "id": 859, + "id": 855, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10555:13:0", + "referencedDeclaration": 805, + "src": "10527:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 861, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, @@ -11988,13 +11950,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "10555:22:0", + "src": "10527:22:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 863, + "id": 859, "isConstant": false, "isLValue": false, "isPure": false, @@ -12002,15 +11964,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10555:38:0", + "src": "10527:38:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 864, + "id": 860, "nodeType": "ExpressionStatement", - "src": "10555:38:0" + "src": "10527:38:0" }, { "eventCall": { @@ -12018,12 +11980,12 @@ "arguments": [ { "argumentTypes": null, - "id": 866, + "id": 862, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10618:13:0", + "referencedDeclaration": 805, + "src": "10590:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12031,12 +11993,12 @@ }, { "argumentTypes": null, - "id": 867, + "id": 863, "name": "amountToRefund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "10633:14:0", + "referencedDeclaration": 843, + "src": "10605:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12054,18 +12016,18 @@ "typeString": "uint256" } ], - "id": 865, + "id": 861, "name": "Withdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, - "src": "10608:9:0", + "src": "10580:9:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 868, + "id": 864, "isConstant": false, "isLValue": false, "isPure": false, @@ -12073,57 +12035,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10608:40:0", + "src": "10580:40:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 869, + "id": 865, "nodeType": "EmitStatement", - "src": "10603:45:0" + "src": "10575:45:0" } ] }, "documentation": null, - "id": 871, + "id": 867, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 812, + "id": 808, "modifierName": { "argumentTypes": null, - "id": 811, + "id": 807, "name": "onlyFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "10116:10:0", + "referencedDeclaration": 1017, + "src": "10088:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "10116:10:0" + "src": "10088:10:0" } ], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 810, + "id": 806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 809, + "id": 805, "name": "refundAddress", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10086:21:0", + "scope": 867, + "src": "10058:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12131,10 +12093,10 @@ "typeString": "address" }, "typeName": { - "id": 808, + "id": 804, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10086:7:0", + "src": "10058:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12144,45 +12106,45 @@ "visibility": "internal" } ], - "src": "10085:23:0" + "src": "10057:23:0" }, "payable": false, "returnParameters": { - "id": 813, + "id": 809, "nodeType": "ParameterList", "parameters": [], - "src": "10127:0:0" + "src": "10099:0:0" }, - "scope": 1080, - "src": "10068:587:0", + "scope": 1076, + "src": "10040:587:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 912, + "id": 908, "nodeType": "Block", - "src": "10801:322:0", + "src": "10773:322:0", "statements": [ { "body": { - "id": 906, + "id": 902, "nodeType": "Block", - "src": "10861:221:0", + "src": "10833:221:0", "statements": [ { "assignments": [ - 890 + 886 ], "declarations": [ { "constant": false, - "id": 890, + "id": 886, "name": "contributorAddress", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "10875:26:0", + "scope": 909, + "src": "10847:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12190,10 +12152,10 @@ "typeString": "address" }, "typeName": { - "id": 889, + "id": 885, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10875:7:0", + "src": "10847:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12203,31 +12165,31 @@ "visibility": "internal" } ], - "id": 894, + "id": 890, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 891, + "id": 887, "name": "contributorList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, - "src": "10904:15:0", + "src": "10876:15:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 893, + "id": 889, "indexExpression": { "argumentTypes": null, - "id": 892, + "id": 888, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "10920:1:0", + "referencedDeclaration": 875, + "src": "10892:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12238,19 +12200,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10904:18:0", + "src": "10876:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "10875:47:0" + "src": "10847:47:0" }, { "condition": { "argumentTypes": null, - "id": 899, + "id": 895, "isConstant": false, "isLValue": false, "isPure": false, @@ -12258,33 +12220,33 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "10940:42:0", + "src": "10912:42:0", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 895, + "id": 891, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10941:12:0", + "src": "10913:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 897, + "id": 893, "indexExpression": { "argumentTypes": null, - "id": 896, + "id": 892, "name": "contributorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 890, - "src": "10954:18:0", + "referencedDeclaration": 886, + "src": "10926:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12295,13 +12257,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10941:32:0", + "src": "10913:32:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 898, + "id": 894, "isConstant": false, "isLValue": true, "isPure": false, @@ -12309,7 +12271,7 @@ "memberName": "refunded", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "10941:41:0", + "src": "10913:41:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12321,13 +12283,13 @@ } }, "falseBody": null, - "id": 905, + "id": 901, "nodeType": "IfStatement", - "src": "10936:136:0", + "src": "10908:136:0", "trueBody": { - "id": 904, + "id": 900, "nodeType": "Block", - "src": "10984:88:0", + "src": "10956:88:0", "statements": [ { "expression": { @@ -12336,14 +12298,14 @@ { "argumentTypes": null, "hexValue": "4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f742079657420726566756e646564", - "id": 901, + "id": 897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11009:47:0", + "src": "10981:47:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_85d231c62370fa6b43ee7ffe2e2243eb8d4631e742e97de3a2558a277a825be1", @@ -12359,21 +12321,21 @@ "typeString": "literal_string \"At least one contributor has not yet refunded\"" } ], - "id": 900, + "id": 896, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 1252, - 1253 + 1248, + 1249 ], - "referencedDeclaration": 1253, - "src": "11002:6:0", + "referencedDeclaration": 1249, + "src": "10974:6:0", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 902, + "id": 898, "isConstant": false, "isLValue": false, "isPure": false, @@ -12381,15 +12343,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11002:55:0", + "src": "10974:55:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 903, + "id": 899, "nodeType": "ExpressionStatement", - "src": "11002:55:0" + "src": "10974:55:0" } ] } @@ -12402,19 +12364,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 885, + "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 882, + "id": 878, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "10828:1:0", + "referencedDeclaration": 875, + "src": "10800:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12426,18 +12388,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 883, + "id": 879, "name": "contributorList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, - "src": "10832:15:0", + "src": "10804:15:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 884, + "id": 880, "isConstant": false, "isLValue": true, "isPure": false, @@ -12445,31 +12407,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "10832:22:0", + "src": "10804:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10828:26:0", + "src": "10800:26:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 907, + "id": 903, "initializationExpression": { "assignments": [ - 879 + 875 ], "declarations": [ { "constant": false, - "id": 879, + "id": 875, "name": "i", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "10816:6:0", + "scope": 909, + "src": "10788:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12477,10 +12439,10 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 874, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "10816:4:0", + "src": "10788:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12490,18 +12452,18 @@ "visibility": "internal" } ], - "id": 881, + "id": 877, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 880, + "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10825:1:0", + "src": "10797:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -12510,12 +12472,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "10816:10:0" + "src": "10788:10:0" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 887, + "id": 883, "isConstant": false, "isLValue": false, "isPure": false, @@ -12523,15 +12485,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "10856:3:0", + "src": "10828:3:0", "subExpression": { "argumentTypes": null, - "id": 886, + "id": 882, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "10856:1:0", + "referencedDeclaration": 875, + "src": "10828:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12542,12 +12504,12 @@ "typeString": "uint256" } }, - "id": 888, + "id": 884, "nodeType": "ExpressionStatement", - "src": "10856:3:0" + "src": "10828:3:0" }, "nodeType": "ForStatement", - "src": "10811:271:0" + "src": "10783:271:0" }, { "expression": { @@ -12555,12 +12517,12 @@ "arguments": [ { "argumentTypes": null, - "id": 909, + "id": 905, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "11104:11:0", + "src": "11076:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12574,18 +12536,18 @@ "typeString": "address" } ], - "id": 908, + "id": 904, "name": "selfdestruct", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1255, - "src": "11091:12:0", + "referencedDeclaration": 1251, + "src": "11063:12:0", "typeDescriptions": { "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 910, + "id": 906, "isConstant": false, "isLValue": false, "isPure": false, @@ -12593,89 +12555,89 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11091:25:0", + "src": "11063:25:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 911, + "id": 907, "nodeType": "ExpressionStatement", - "src": "11091:25:0" + "src": "11063:25:0" } ] }, "documentation": null, - "id": 913, + "id": 909, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 874, + "id": 870, "modifierName": { "argumentTypes": null, - "id": 873, + "id": 869, "name": "onlyTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, - "src": "10778:11:0", + "referencedDeclaration": 1075, + "src": "10750:11:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "10778:11:0" + "src": "10750:11:0" }, { "arguments": null, - "id": 876, + "id": 872, "modifierName": { "argumentTypes": null, - "id": 875, + "id": 871, "name": "onlyFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "10790:10:0", + "referencedDeclaration": 1017, + "src": "10762:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "10790:10:0" + "src": "10762:10:0" } ], "name": "destroy", "nodeType": "FunctionDefinition", "parameters": { - "id": 872, + "id": 868, "nodeType": "ParameterList", "parameters": [], - "src": "10768:2:0" + "src": "10740:2:0" }, "payable": false, "returnParameters": { - "id": 877, + "id": 873, "nodeType": "ParameterList", "parameters": [], - "src": "10801:0:0" + "src": "10773:0:0" }, - "scope": 1080, - "src": "10752:371:0", + "scope": 1076, + "src": "10724:371:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 927, + "id": 923, "nodeType": "Block", - "src": "11200:57:0", + "src": "11172:57:0", "statements": [ { "expression": { @@ -12684,7 +12646,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 925, + "id": 921, "isConstant": false, "isLValue": false, "isPure": false, @@ -12695,14 +12657,14 @@ { "argumentTypes": null, "hexValue": "32", - "id": 922, + "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11233:1:0", + "src": "11205:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -12720,32 +12682,32 @@ ], "expression": { "argumentTypes": null, - "id": 920, + "id": 916, "name": "valueVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "11217:11:0", + "referencedDeclaration": 911, + "src": "11189:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 921, + "id": 917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "11217:15:0", + "referencedDeclaration": 1169, + "src": "11189:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 923, + "id": 919, "isConstant": false, "isLValue": false, "isPure": false, @@ -12753,7 +12715,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11217:18:0", + "src": "11189:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12763,32 +12725,32 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 924, + "id": 920, "name": "amountRaised", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 56, - "src": "11238:12:0", + "src": "11210:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11217:33:0", + "src": "11189:33:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 919, - "id": 926, + "functionReturnParameters": 915, + "id": 922, "nodeType": "Return", - "src": "11210:40:0" + "src": "11182:40:0" } ] }, "documentation": null, - "id": 928, + "id": 924, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -12796,16 +12758,16 @@ "name": "isMajorityVoting", "nodeType": "FunctionDefinition", "parameters": { - "id": 916, + "id": 912, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 915, + "id": 911, "name": "valueVoting", "nodeType": "VariableDeclaration", - "scope": 928, - "src": "11155:16:0", + "scope": 924, + "src": "11127:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12813,10 +12775,10 @@ "typeString": "uint256" }, "typeName": { - "id": 914, + "id": 910, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11155:4:0", + "src": "11127:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12826,20 +12788,20 @@ "visibility": "internal" } ], - "src": "11154:18:0" + "src": "11126:18:0" }, "payable": false, "returnParameters": { - "id": 919, + "id": 915, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 918, + "id": 914, "name": "", "nodeType": "VariableDeclaration", - "scope": 928, - "src": "11194:4:0", + "scope": 924, + "src": "11166:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12847,10 +12809,10 @@ "typeString": "bool" }, "typeName": { - "id": 917, + "id": 913, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11194:4:0", + "src": "11166:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12860,25 +12822,25 @@ "visibility": "internal" } ], - "src": "11193:6:0" + "src": "11165:6:0" }, - "scope": 1080, - "src": "11129:128:0", + "scope": 1076, + "src": "11101:128:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 958, + "id": 954, "nodeType": "Block", - "src": "11317:180:0", + "src": "11289:180:0", "statements": [ { "body": { - "id": 954, + "id": 950, "nodeType": "Block", - "src": "11370:99:0", + "src": "11342:99:0", "statements": [ { "condition": { @@ -12887,7 +12849,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 949, + "id": 945, "isConstant": false, "isLValue": false, "isPure": false, @@ -12896,18 +12858,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 944, + "id": 940, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "11388:3:0", + "referencedDeclaration": 1243, + "src": "11360:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 945, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -12915,7 +12877,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "11388:10:0", + "src": "11360:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12927,26 +12889,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 946, + "id": 942, "name": "trustees", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 74, - "src": "11402:8:0", + "src": "11374:8:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 948, + "id": 944, "indexExpression": { "argumentTypes": null, - "id": 947, + "id": 943, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, - "src": "11411:1:0", + "referencedDeclaration": 930, + "src": "11383:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12957,39 +12919,39 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11402:11:0", + "src": "11374:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "11388:25:0", + "src": "11360:25:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 953, + "id": 949, "nodeType": "IfStatement", - "src": "11384:75:0", + "src": "11356:75:0", "trueBody": { - "id": 952, + "id": 948, "nodeType": "Block", - "src": "11415:44:0", + "src": "11387:44:0", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 950, + "id": 946, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "11440:4:0", + "src": "11412:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -12997,10 +12959,10 @@ }, "value": "true" }, - "functionReturnParameters": 932, - "id": 951, + "functionReturnParameters": 928, + "id": 947, "nodeType": "Return", - "src": "11433:11:0" + "src": "11405:11:0" } ] } @@ -13013,19 +12975,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 940, + "id": 936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 937, + "id": 933, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, - "src": "11344:1:0", + "referencedDeclaration": 930, + "src": "11316:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13037,18 +12999,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 938, + "id": 934, "name": "trustees", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 74, - "src": "11348:8:0", + "src": "11320:8:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 939, + "id": 935, "isConstant": false, "isLValue": true, "isPure": false, @@ -13056,31 +13018,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "11348:15:0", + "src": "11320:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11344:19:0", + "src": "11316:19:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 955, + "id": 951, "initializationExpression": { "assignments": [ - 934 + 930 ], "declarations": [ { "constant": false, - "id": 934, + "id": 930, "name": "i", "nodeType": "VariableDeclaration", - "scope": 959, - "src": "11332:6:0", + "scope": 955, + "src": "11304:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13088,10 +13050,10 @@ "typeString": "uint256" }, "typeName": { - "id": 933, + "id": 929, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11332:4:0", + "src": "11304:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13101,18 +13063,18 @@ "visibility": "internal" } ], - "id": 936, + "id": 932, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 935, + "id": 931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11341:1:0", + "src": "11313:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -13121,12 +13083,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "11332:10:0" + "src": "11304:10:0" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 942, + "id": 938, "isConstant": false, "isLValue": false, "isPure": false, @@ -13134,15 +13096,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "11365:3:0", + "src": "11337:3:0", "subExpression": { "argumentTypes": null, - "id": 941, + "id": 937, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, - "src": "11365:1:0", + "referencedDeclaration": 930, + "src": "11337:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13153,25 +13115,25 @@ "typeString": "uint256" } }, - "id": 943, + "id": 939, "nodeType": "ExpressionStatement", - "src": "11365:3:0" + "src": "11337:3:0" }, "nodeType": "ForStatement", - "src": "11327:142:0" + "src": "11299:142:0" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 956, + "id": 952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "11485:5:0", + "src": "11457:5:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -13179,15 +13141,15 @@ }, "value": "false" }, - "functionReturnParameters": 932, - "id": 957, + "functionReturnParameters": 928, + "id": 953, "nodeType": "Return", - "src": "11478:12:0" + "src": "11450:12:0" } ] }, "documentation": null, - "id": 959, + "id": 955, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13195,23 +13157,23 @@ "name": "isCallerTrustee", "nodeType": "FunctionDefinition", "parameters": { - "id": 929, + "id": 925, "nodeType": "ParameterList", "parameters": [], - "src": "11287:2:0" + "src": "11259:2:0" }, "payable": false, "returnParameters": { - "id": 932, + "id": 928, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 931, + "id": 927, "name": "", "nodeType": "VariableDeclaration", - "scope": 959, - "src": "11311:4:0", + "scope": 955, + "src": "11283:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13219,10 +13181,10 @@ "typeString": "bool" }, "typeName": { - "id": 930, + "id": 926, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11311:4:0", + "src": "11283:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13232,19 +13194,19 @@ "visibility": "internal" } ], - "src": "11310:6:0" + "src": "11282:6:0" }, - "scope": 1080, - "src": "11263:234:0", + "scope": 1076, + "src": "11235:234:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 971, + "id": 967, "nodeType": "Block", - "src": "11550:62:0", + "src": "11522:62:0", "statements": [ { "expression": { @@ -13253,7 +13215,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 969, + "id": 965, "isConstant": false, "isLValue": false, "isPure": false, @@ -13264,19 +13226,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 966, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 964, + "id": 960, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "11567:3:0", + "referencedDeclaration": 1245, + "src": "11539:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13286,18 +13248,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 965, + "id": 961, "name": "deadline", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, - "src": "11574:8:0", + "src": "11546:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11567:15:0", + "src": "11539:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13307,7 +13269,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 968, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, @@ -13315,15 +13277,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "11586:19:0", + "src": "11558:19:0", "subExpression": { "argumentTypes": null, - "id": 967, + "id": 963, "name": "isRaiseGoalReached", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "11587:18:0", + "src": "11559:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13334,21 +13296,21 @@ "typeString": "bool" } }, - "src": "11567:38:0", + "src": "11539:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 963, - "id": 970, + "functionReturnParameters": 959, + "id": 966, "nodeType": "Return", - "src": "11560:45:0" + "src": "11532:45:0" } ] }, "documentation": null, - "id": 972, + "id": 968, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13356,23 +13318,23 @@ "name": "isFailed", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 956, "nodeType": "ParameterList", "parameters": [], - "src": "11520:2:0" + "src": "11492:2:0" }, "payable": false, "returnParameters": { - "id": 963, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 962, + "id": 958, "name": "", "nodeType": "VariableDeclaration", - "scope": 972, - "src": "11544:4:0", + "scope": 968, + "src": "11516:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13380,10 +13342,10 @@ "typeString": "bool" }, "typeName": { - "id": 961, + "id": 957, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11544:4:0", + "src": "11516:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13393,19 +13355,19 @@ "visibility": "internal" } ], - "src": "11543:6:0" + "src": "11515:6:0" }, - "scope": 1080, - "src": "11503:109:0", + "scope": 1076, + "src": "11475:109:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 988, + "id": 984, "nodeType": "Block", - "src": "11731:90:0", + "src": "11703:90:0", "statements": [ { "expression": { @@ -13416,26 +13378,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 981, + "id": 977, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "11749:12:0", + "src": "11721:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 983, + "id": 979, "indexExpression": { "argumentTypes": null, - "id": 982, + "id": 978, "name": "contributorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "11762:18:0", + "referencedDeclaration": 970, + "src": "11734:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13446,13 +13408,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11749:32:0", + "src": "11721:32:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 984, + "id": 980, "isConstant": false, "isLValue": true, "isPure": false, @@ -13460,21 +13422,21 @@ "memberName": "milestoneNoVotes", "nodeType": "MemberAccess", "referencedDeclaration": 25, - "src": "11749:49:0", + "src": "11721:49:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage", "typeString": "bool[] storage ref" } }, - "id": 986, + "id": 982, "indexExpression": { "argumentTypes": null, - "id": 985, + "id": 981, "name": "milestoneIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 976, - "src": "11799:14:0", + "referencedDeclaration": 972, + "src": "11771:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13485,21 +13447,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11749:65:0", + "src": "11721:65:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 980, - "id": 987, + "functionReturnParameters": 976, + "id": 983, "nodeType": "Return", - "src": "11742:72:0" + "src": "11714:72:0" } ] }, "documentation": null, - "id": 989, + "id": 985, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13507,16 +13469,16 @@ "name": "getContributorMilestoneVote", "nodeType": "FunctionDefinition", "parameters": { - "id": 977, + "id": 973, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 974, + "id": 970, "name": "contributorAddress", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "11655:26:0", + "scope": 985, + "src": "11627:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13524,10 +13486,10 @@ "typeString": "address" }, "typeName": { - "id": 973, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "11655:7:0", + "src": "11627:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13538,11 +13500,11 @@ }, { "constant": false, - "id": 976, + "id": 972, "name": "milestoneIndex", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "11683:19:0", + "scope": 985, + "src": "11655:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13550,10 +13512,10 @@ "typeString": "uint256" }, "typeName": { - "id": 975, + "id": 971, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11683:4:0", + "src": "11655:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13563,20 +13525,20 @@ "visibility": "internal" } ], - "src": "11654:49:0" + "src": "11626:49:0" }, "payable": false, "returnParameters": { - "id": 980, + "id": 976, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 979, + "id": 975, "name": "", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "11725:4:0", + "scope": 985, + "src": "11697:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13584,10 +13546,10 @@ "typeString": "bool" }, "typeName": { - "id": 978, + "id": 974, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11725:4:0", + "src": "11697:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13597,19 +13559,19 @@ "visibility": "internal" } ], - "src": "11724:6:0" + "src": "11696:6:0" }, - "scope": 1080, - "src": "11618:203:0", + "scope": 1076, + "src": "11590:203:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1001, + "id": 997, "nodeType": "Block", - "src": "11924:75:0", + "src": "11896:75:0", "statements": [ { "expression": { @@ -13618,26 +13580,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 996, + "id": 992, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "11941:12:0", + "src": "11913:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 998, + "id": 994, "indexExpression": { "argumentTypes": null, - "id": 997, + "id": 993, "name": "contributorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 991, - "src": "11954:18:0", + "referencedDeclaration": 987, + "src": "11926:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13648,13 +13610,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11941:32:0", + "src": "11913:32:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 999, + "id": 995, "isConstant": false, "isLValue": true, "isPure": false, @@ -13662,21 +13624,21 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "11941:51:0", + "src": "11913:51:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 995, - "id": 1000, + "functionReturnParameters": 991, + "id": 996, "nodeType": "Return", - "src": "11934:58:0" + "src": "11906:58:0" } ] }, "documentation": null, - "id": 1002, + "id": 998, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13684,16 +13646,16 @@ "name": "getContributorContributionAmount", "nodeType": "FunctionDefinition", "parameters": { - "id": 992, + "id": 988, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 991, + "id": 987, "name": "contributorAddress", "nodeType": "VariableDeclaration", - "scope": 1002, - "src": "11869:26:0", + "scope": 998, + "src": "11841:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13701,10 +13663,10 @@ "typeString": "address" }, "typeName": { - "id": 990, + "id": 986, "name": "address", "nodeType": "ElementaryTypeName", - "src": "11869:7:0", + "src": "11841:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13714,20 +13676,20 @@ "visibility": "internal" } ], - "src": "11868:28:0" + "src": "11840:28:0" }, "payable": false, "returnParameters": { - "id": 995, + "id": 991, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 994, + "id": 990, "name": "", "nodeType": "VariableDeclaration", - "scope": 1002, - "src": "11918:4:0", + "scope": 998, + "src": "11890:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13735,10 +13697,10 @@ "typeString": "uint256" }, "typeName": { - "id": 993, + "id": 989, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11918:4:0", + "src": "11890:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13748,19 +13710,19 @@ "visibility": "internal" } ], - "src": "11917:6:0" + "src": "11889:6:0" }, - "scope": 1080, - "src": "11827:172:0", + "scope": 1076, + "src": "11799:172:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1011, + "id": 1007, "nodeType": "Block", - "src": "12059:42:0", + "src": "12031:42:0", "statements": [ { "expression": { @@ -13768,12 +13730,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1008, + "id": 1004, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "12081:12:0", + "src": "12053:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -13787,20 +13749,20 @@ "typeString": "enum CrowdFund.FreezeReason" } ], - "id": 1007, + "id": 1003, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "12076:4:0", + "src": "12048:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint" }, - "id": 1009, + "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, @@ -13808,21 +13770,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12076:18:0", + "src": "12048:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1006, - "id": 1010, + "functionReturnParameters": 1002, + "id": 1006, "nodeType": "Return", - "src": "12069:25:0" + "src": "12041:25:0" } ] }, "documentation": null, - "id": 1012, + "id": 1008, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -13830,23 +13792,23 @@ "name": "getFreezeReason", "nodeType": "FunctionDefinition", "parameters": { - "id": 1003, + "id": 999, "nodeType": "ParameterList", "parameters": [], - "src": "12029:2:0" + "src": "12001:2:0" }, "payable": false, "returnParameters": { - "id": 1006, + "id": 1002, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1005, + "id": 1001, "name": "", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "12053:4:0", + "scope": 1008, + "src": "12025:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13854,10 +13816,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1004, + "id": 1000, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "12053:4:0", + "src": "12025:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13867,19 +13829,19 @@ "visibility": "internal" } ], - "src": "12052:6:0" + "src": "12024:6:0" }, - "scope": 1080, - "src": "12005:96:0", + "scope": 1076, + "src": "11977:96:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1020, + "id": 1016, "nodeType": "Block", - "src": "12129:70:0", + "src": "12101:70:0", "statements": [ { "expression": { @@ -13887,12 +13849,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1015, + "id": 1011, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "12147:6:0", + "src": "12119:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13901,14 +13863,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e64206973206e6f742066726f7a656e", - "id": 1016, + "id": 1012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12155:25:0", + "src": "12127:25:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_144124cc12823f56a1037eeced499cee1638a07fba8aa0ce757da7cf592192bf", @@ -13928,21 +13890,21 @@ "typeString": "literal_string \"CrowdFund is not frozen\"" } ], - "id": 1014, + "id": 1010, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12139:7:0", + "referencedDeclaration": 1247, + "src": "12111:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1017, + "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, @@ -13950,41 +13912,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12139:42:0", + "src": "12111:42:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1018, + "id": 1014, "nodeType": "ExpressionStatement", - "src": "12139:42:0" + "src": "12111:42:0" }, { - "id": 1019, + "id": 1015, "nodeType": "PlaceholderStatement", - "src": "12191:1:0" + "src": "12163:1:0" } ] }, "documentation": null, - "id": 1021, + "id": 1017, "name": "onlyFrozen", "nodeType": "ModifierDefinition", "parameters": { - "id": 1013, + "id": 1009, "nodeType": "ParameterList", "parameters": [], - "src": "12126:2:0" + "src": "12098:2:0" }, - "src": "12107:92:0", + "src": "12079:92:0", "visibility": "internal" }, { "body": { - "id": 1030, + "id": 1026, "nodeType": "Block", - "src": "12229:67:0", + "src": "12201:67:0", "statements": [ { "expression": { @@ -13992,7 +13954,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1025, + "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, @@ -14000,15 +13962,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "12247:7:0", + "src": "12219:7:0", "subExpression": { "argumentTypes": null, - "id": 1024, + "id": 1020, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "12248:6:0", + "src": "12220:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14022,14 +13984,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e642069732066726f7a656e", - "id": 1026, + "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12256:21:0", + "src": "12228:21:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21ebfed987d130de5e469bef5346c6c759f8769c3909e5f178aa85e98366503d", @@ -14049,21 +14011,21 @@ "typeString": "literal_string \"CrowdFund is frozen\"" } ], - "id": 1023, + "id": 1019, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12239:7:0", + "referencedDeclaration": 1247, + "src": "12211:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1027, + "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, @@ -14071,41 +14033,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12239:39:0", + "src": "12211:39:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1028, + "id": 1024, "nodeType": "ExpressionStatement", - "src": "12239:39:0" + "src": "12211:39:0" }, { - "id": 1029, + "id": 1025, "nodeType": "PlaceholderStatement", - "src": "12288:1:0" + "src": "12260:1:0" } ] }, "documentation": null, - "id": 1031, + "id": 1027, "name": "onlyUnfrozen", "nodeType": "ModifierDefinition", "parameters": { - "id": 1022, + "id": 1018, "nodeType": "ParameterList", "parameters": [], - "src": "12226:2:0" + "src": "12198:2:0" }, - "src": "12205:91:0", + "src": "12177:91:0", "visibility": "internal" }, { "body": { - "id": 1039, + "id": 1035, "nodeType": "Block", - "src": "12324:84:0", + "src": "12296:84:0", "statements": [ { "expression": { @@ -14113,12 +14075,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1034, + "id": 1030, "name": "isRaiseGoalReached", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "12342:18:0", + "src": "12314:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14127,14 +14089,14 @@ { "argumentTypes": null, "hexValue": "526169736520676f616c206973206e6f742072656163686564", - "id": 1035, + "id": 1031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12362:27:0", + "src": "12334:27:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d65d4721f73624ca6e381e7ad4c000f40a20c0abe88c0be62360bb906d10ffbe", @@ -14154,21 +14116,21 @@ "typeString": "literal_string \"Raise goal is not reached\"" } ], - "id": 1033, + "id": 1029, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12334:7:0", + "referencedDeclaration": 1247, + "src": "12306:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1036, + "id": 1032, "isConstant": false, "isLValue": false, "isPure": false, @@ -14176,41 +14138,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12334:56:0", + "src": "12306:56:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1037, + "id": 1033, "nodeType": "ExpressionStatement", - "src": "12334:56:0" + "src": "12306:56:0" }, { - "id": 1038, + "id": 1034, "nodeType": "PlaceholderStatement", - "src": "12400:1:0" + "src": "12372:1:0" } ] }, "documentation": null, - "id": 1040, + "id": 1036, "name": "onlyRaised", "nodeType": "ModifierDefinition", "parameters": { - "id": 1032, + "id": 1028, "nodeType": "ParameterList", "parameters": [], - "src": "12321:2:0" + "src": "12293:2:0" }, - "src": "12302:106:0", + "src": "12274:106:0", "visibility": "internal" }, { "body": { - "id": 1053, + "id": 1049, "nodeType": "Block", - "src": "12437:103:0", + "src": "12409:103:0", "statements": [ { "expression": { @@ -14222,7 +14184,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1048, + "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, @@ -14233,19 +14195,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1045, + "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1043, + "id": 1039, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "12455:3:0", + "referencedDeclaration": 1245, + "src": "12427:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14255,18 +14217,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1044, + "id": 1040, "name": "deadline", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, - "src": "12462:8:0", + "src": "12434:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "12455:15:0", + "src": "12427:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14276,7 +14238,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 1047, + "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, @@ -14284,15 +14246,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "12474:19:0", + "src": "12446:19:0", "subExpression": { "argumentTypes": null, - "id": 1046, + "id": 1042, "name": "isRaiseGoalReached", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "12475:18:0", + "src": "12447:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14303,7 +14265,7 @@ "typeString": "bool" } }, - "src": "12455:38:0", + "src": "12427:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14312,14 +14274,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e64206973206e6f74206f6e676f696e67", - "id": 1049, + "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12495:26:0", + "src": "12467:26:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_843cc2d7a1ba19041b40561b89d21c7571d29e5c5e2d0d1510f441aea3fc1747", @@ -14339,21 +14301,21 @@ "typeString": "literal_string \"CrowdFund is not ongoing\"" } ], - "id": 1042, + "id": 1038, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12447:7:0", + "referencedDeclaration": 1247, + "src": "12419:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1050, + "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, @@ -14361,41 +14323,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12447:75:0", + "src": "12419:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1051, + "id": 1047, "nodeType": "ExpressionStatement", - "src": "12447:75:0" + "src": "12419:75:0" }, { - "id": 1052, + "id": 1048, "nodeType": "PlaceholderStatement", - "src": "12532:1:0" + "src": "12504:1:0" } ] }, "documentation": null, - "id": 1054, + "id": 1050, "name": "onlyOnGoing", "nodeType": "ModifierDefinition", "parameters": { - "id": 1041, + "id": 1037, "nodeType": "ParameterList", "parameters": [], - "src": "12434:2:0" + "src": "12406:2:0" }, - "src": "12414:126:0", + "src": "12386:126:0", "visibility": "internal" }, { "body": { - "id": 1068, + "id": 1064, "nodeType": "Block", - "src": "12573:116:0", + "src": "12545:116:0", "statements": [ { "expression": { @@ -14407,7 +14369,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1063, + "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, @@ -14418,34 +14380,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1057, + "id": 1053, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "12591:12:0", + "src": "12563:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 1060, + "id": 1056, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1058, + "id": 1054, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "12604:3:0", + "referencedDeclaration": 1243, + "src": "12576:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1059, + "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, @@ -14453,7 +14415,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "12604:10:0", + "src": "12576:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14464,13 +14426,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "12591:24:0", + "src": "12563:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 1061, + "id": 1057, "isConstant": false, "isLValue": true, "isPure": false, @@ -14478,7 +14440,7 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "12591:43:0", + "src": "12563:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14489,14 +14451,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1062, + "id": 1058, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12638:1:0", + "src": "12610:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14504,7 +14466,7 @@ }, "value": "0" }, - "src": "12591:48:0", + "src": "12563:48:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14513,14 +14475,14 @@ { "argumentTypes": null, "hexValue": "43616c6c6572206973206e6f74206120636f6e7472696275746f72", - "id": 1064, + "id": 1060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12641:29:0", + "src": "12613:29:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27c7012fc5b199883f3d6c1e7d0d3c9cd967752b2ed8ba1703713f2d84425e7b", @@ -14540,21 +14502,21 @@ "typeString": "literal_string \"Caller is not a contributor\"" } ], - "id": 1056, + "id": 1052, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12583:7:0", + "referencedDeclaration": 1247, + "src": "12555:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1065, + "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, @@ -14562,41 +14524,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12583:88:0", + "src": "12555:88:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1066, + "id": 1062, "nodeType": "ExpressionStatement", - "src": "12583:88:0" + "src": "12555:88:0" }, { - "id": 1067, + "id": 1063, "nodeType": "PlaceholderStatement", - "src": "12681:1:0" + "src": "12653:1:0" } ] }, "documentation": null, - "id": 1069, + "id": 1065, "name": "onlyContributor", "nodeType": "ModifierDefinition", "parameters": { - "id": 1055, + "id": 1051, "nodeType": "ParameterList", "parameters": [], - "src": "12570:2:0" + "src": "12542:2:0" }, - "src": "12546:143:0", + "src": "12518:143:0", "visibility": "internal" }, { "body": { - "id": 1078, + "id": 1074, "nodeType": "Block", - "src": "12718:81:0", + "src": "12690:81:0", "statements": [ { "expression": { @@ -14607,18 +14569,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1072, + "id": 1068, "name": "isCallerTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "12736:15:0", + "referencedDeclaration": 955, + "src": "12708:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 1073, + "id": 1069, "isConstant": false, "isLValue": false, "isPure": false, @@ -14626,7 +14588,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12736:17:0", + "src": "12708:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14635,14 +14597,14 @@ { "argumentTypes": null, "hexValue": "43616c6c6572206973206e6f7420612074727573746565", - "id": 1074, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12755:25:0", + "src": "12727:25:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_efecdf3be8b72bfbf67a07f441dfdb20b968592ad6d7fba48a91dfa72a34f2d8", @@ -14662,21 +14624,21 @@ "typeString": "literal_string \"Caller is not a trustee\"" } ], - "id": 1071, + "id": 1067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12728:7:0", + "referencedDeclaration": 1247, + "src": "12700:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1075, + "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, @@ -14684,51 +14646,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12728:53:0", + "src": "12700:53:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1076, + "id": 1072, "nodeType": "ExpressionStatement", - "src": "12728:53:0" + "src": "12700:53:0" }, { - "id": 1077, + "id": 1073, "nodeType": "PlaceholderStatement", - "src": "12791:1:0" + "src": "12763:1:0" } ] }, "documentation": null, - "id": 1079, + "id": 1075, "name": "onlyTrustee", "nodeType": "ModifierDefinition", "parameters": { - "id": 1070, + "id": 1066, "nodeType": "ParameterList", "parameters": [], - "src": "12715:2:0" + "src": "12687:2:0" }, - "src": "12695:104:0", + "src": "12667:104:0", "visibility": "internal" } ], - "scope": 1081, - "src": "87:12715:0" + "scope": 1077, + "src": "87:12687:0" } ], - "src": "0:12802:0" + "src": "0:12775:0" }, "legacyAST": { - "absolutePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFund.sol", + "absolutePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFund.sol", "exportedSymbols": { "CrowdFund": [ - 1080 + 1076 ] }, - "id": 1081, + "id": 1077, "nodeType": "SourceUnit", "nodes": [ { @@ -14747,8 +14709,8 @@ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 1081, - "sourceUnit": 1233, + "scope": 1077, + "sourceUnit": 1229, "src": "25:59:0", "symbolAliases": [], "unitAlias": "" @@ -14759,9 +14721,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1080, + "id": 1076, "linearizedBaseContracts": [ - 1080 + 1076 ], "name": "CrowdFund", "nodeType": "ContractDefinition", @@ -14773,10 +14735,10 @@ "id": 3, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1232, + "referencedDeclaration": 1228, "src": "118:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1232", + "typeIdentifier": "t_contract$_SafeMath_$1228", "typeString": "library SafeMath" } }, @@ -14825,7 +14787,7 @@ "id": 11, "name": "freezeReason", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "264:25:0", "stateVariable": true, "storageLocation": "default", @@ -14959,7 +14921,7 @@ ], "name": "Milestone", "nodeType": "StructDefinition", - "scope": 1080, + "scope": 1076, "src": "296:144:0", "visibility": "public" }, @@ -15084,7 +15046,7 @@ ], "name": "Contributor", "nodeType": "StructDefinition", - "scope": 1080, + "scope": 1076, "src": "446:197:0", "visibility": "public" }, @@ -15231,7 +15193,7 @@ "id": 44, "name": "frozen", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "776:18:0", "stateVariable": true, "storageLocation": "default", @@ -15257,7 +15219,7 @@ "id": 46, "name": "isRaiseGoalReached", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "800:30:0", "stateVariable": true, "storageLocation": "default", @@ -15283,7 +15245,7 @@ "id": 48, "name": "immediateFirstMilestonePayout", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "836:41:0", "stateVariable": true, "storageLocation": "default", @@ -15309,7 +15271,7 @@ "id": 50, "name": "milestoneVotingPeriod", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "883:33:0", "stateVariable": true, "storageLocation": "default", @@ -15335,7 +15297,7 @@ "id": 52, "name": "deadline", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "922:20:0", "stateVariable": true, "storageLocation": "default", @@ -15361,7 +15323,7 @@ "id": 54, "name": "raiseGoal", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "948:21:0", "stateVariable": true, "storageLocation": "default", @@ -15387,7 +15349,7 @@ "id": 56, "name": "amountRaised", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "975:24:0", "stateVariable": true, "storageLocation": "default", @@ -15413,7 +15375,7 @@ "id": 58, "name": "frozenBalance", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1005:25:0", "stateVariable": true, "storageLocation": "default", @@ -15439,7 +15401,7 @@ "id": 60, "name": "minimumContributionAmount", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1036:37:0", "stateVariable": true, "storageLocation": "default", @@ -15465,7 +15427,7 @@ "id": 62, "name": "amountVotingForRefund", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1079:33:0", "stateVariable": true, "storageLocation": "default", @@ -15491,7 +15453,7 @@ "id": 64, "name": "beneficiary", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1118:26:0", "stateVariable": true, "storageLocation": "default", @@ -15517,7 +15479,7 @@ "id": 68, "name": "contributors", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1150:51:0", "stateVariable": true, "storageLocation": "default", @@ -15564,7 +15526,7 @@ "id": 71, "name": "contributorList", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1207:32:0", "stateVariable": true, "storageLocation": "default", @@ -15600,7 +15562,7 @@ "id": 74, "name": "trustees", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1302:25:0", "stateVariable": true, "storageLocation": "default", @@ -15636,7 +15598,7 @@ "id": 77, "name": "milestones", "nodeType": "VariableDeclaration", - "scope": 1080, + "scope": 1076, "src": "1401:29:0", "stateVariable": true, "storageLocation": "default", @@ -15763,10 +15725,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "1689:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15980,10 +15942,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "1767:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -16197,10 +16159,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "1894:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -16449,10 +16411,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "2338:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -16544,7 +16506,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "2440:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -16973,10 +16935,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "2713:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17230,7 +17192,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "3026:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17790,7 +17752,7 @@ "parameters": [], "src": "1679:0:0" }, - "scope": 1080, + "scope": 1076, "src": "1437:1931:0", "stateMutability": "nonpayable", "superFunction": null, @@ -17846,7 +17808,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "3521:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17895,7 +17857,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "3504:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -18002,10 +17964,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "3541:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -18082,7 +18044,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4076:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18291,10 +18253,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "4186:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -18357,7 +18319,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4393:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18468,7 +18430,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4776:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18527,7 +18489,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4857:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18582,7 +18544,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4822:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18635,7 +18597,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "4809:47:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -18708,7 +18670,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4457:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18753,7 +18715,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4521:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18951,7 +18913,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "4713:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -19195,7 +19157,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "5033:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -19224,7 +19186,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "5045:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -19303,7 +19265,7 @@ "name": "onlyOnGoing", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1054, + "referencedDeclaration": 1050, "src": "3411:11:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -19322,7 +19284,7 @@ "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 1027, "src": "3423:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -19348,7 +19310,7 @@ "parameters": [], "src": "3436:0:0" }, - "scope": 1080, + "scope": 1076, "src": "3374:1688:0", "stateMutability": "payable", "superFunction": null, @@ -19560,7 +19522,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "5301:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19680,7 +19642,7 @@ "name": "isMajorityVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, + "referencedDeclaration": 924, "src": "5343:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", @@ -19771,10 +19733,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "5460:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -20341,10 +20303,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "5721:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -20636,7 +20598,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, + "referencedDeclaration": 1169, "src": "6660:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -20671,7 +20633,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "6652:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -20685,7 +20647,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "6652:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -20911,7 +20873,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "6326:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -20925,7 +20887,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1231, + "referencedDeclaration": 1227, "src": "6326:7:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -21083,7 +21045,7 @@ "name": "onlyTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, + "referencedDeclaration": 1075, "src": "5120:11:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -21102,7 +21064,7 @@ "name": "onlyRaised", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, + "referencedDeclaration": 1036, "src": "5132:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -21121,7 +21083,7 @@ "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 1027, "src": "5143:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -21174,7 +21136,7 @@ "parameters": [], "src": "5156:0:0" }, - "scope": 1080, + "scope": 1076, "src": "5068:1638:0", "stateMutability": "nonpayable", "superFunction": null, @@ -21182,9 +21144,9 @@ }, { "body": { - "id": 591, + "id": 589, "nodeType": "Block", - "src": "6811:940:0", + "src": "6811:930:0", "statements": [ { "assignments": [ @@ -21196,7 +21158,7 @@ "id": 494, "name": "existingMilestoneNoVote", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "6821:28:0", "stateVariable": false, "storageLocation": "default", @@ -21247,7 +21209,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "6865:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -21404,10 +21366,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "6910:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -21442,7 +21404,7 @@ "id": 511, "name": "milestoneVotingStarted", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "7017:27:0", "stateVariable": false, "storageLocation": "default", @@ -21571,7 +21533,7 @@ "id": 520, "name": "votePeriodHasEnded", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "7104:23:0", "stateVariable": false, "storageLocation": "default", @@ -21669,7 +21631,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, + "referencedDeclaration": 1245, "src": "7177:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -21695,7 +21657,7 @@ "id": 529, "name": "onGoingVote", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "7190:16:0", "stateVariable": false, "storageLocation": "default", @@ -21833,10 +21795,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, + "referencedDeclaration": 1247, "src": "7264:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -21897,7 +21859,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "7340:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -22024,277 +21986,258 @@ } }, "falseBody": { - "condition": { - "argumentTypes": null, - "id": 570, - "name": "vote", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "7576:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 589, - "nodeType": "IfStatement", - "src": "7572:173:0", - "trueBody": { - "id": 588, - "nodeType": "Block", - "src": "7582:163:0", - "statements": [ - { - "expression": { + "id": 587, + "nodeType": "Block", + "src": "7572:163:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "argumentTypes": null, - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { + "expression": { "argumentTypes": null, - "expression": { + "baseExpression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 571, - "name": "milestones", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "7596:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", - "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" - } - }, - "id": 573, - "indexExpression": { - "argumentTypes": null, - "id": 572, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 482, - "src": "7607:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7596:17:0", + "id": 570, + "name": "milestones", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "7586:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Milestone_$20_storage", - "typeString": "struct CrowdFund.Milestone storage ref" + "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", + "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" + } + }, + "id": 572, + "indexExpression": { + "argumentTypes": null, + "id": 571, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 482, + "src": "7597:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 574, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "memberName": "amountVotingAgainstPayout", - "nodeType": "MemberAccess", - "referencedDeclaration": 15, - "src": "7596:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 580, - "name": "contributors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68, - "src": "7690:12:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", - "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" - } - }, - "id": 583, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 581, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "7703:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7703:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7690:24:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Contributor_$30_storage", - "typeString": "struct CrowdFund.Contributor storage ref" - } - }, - "id": 584, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "contributionAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "7690:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 575, - "name": "milestones", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "7642:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", - "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" - } - }, - "id": 577, - "indexExpression": { - "argumentTypes": null, - "id": 576, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 482, - "src": "7653:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7642:17:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Milestone_$20_storage", - "typeString": "struct CrowdFund.Milestone storage ref" - } - }, - "id": 578, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountVotingAgainstPayout", - "nodeType": "MemberAccess", - "referencedDeclaration": 15, - "src": "7642:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1231, - "src": "7642:47:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7642:92:0", + "nodeType": "IndexAccess", + "src": "7586:17:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Milestone_$20_storage", + "typeString": "struct CrowdFund.Milestone storage ref" } }, - "src": "7596:138:0", + "id": 573, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amountVotingAgainstPayout", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "7586:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 587, - "nodeType": "ExpressionStatement", - "src": "7596:138:0" - } - ] - } + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 579, + "name": "contributors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "7680:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", + "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" + } + }, + "id": 582, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 580, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1243, + "src": "7693:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7693:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7680:24:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Contributor_$30_storage", + "typeString": "struct CrowdFund.Contributor storage ref" + } + }, + "id": 583, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contributionAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "7680:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 574, + "name": "milestones", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "7632:10:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", + "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" + } + }, + "id": 576, + "indexExpression": { + "argumentTypes": null, + "id": 575, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 482, + "src": "7643:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7632:17:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Milestone_$20_storage", + "typeString": "struct CrowdFund.Milestone storage ref" + } + }, + "id": 577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amountVotingAgainstPayout", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "7632:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1227, + "src": "7632:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7632:92:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7586:138:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 586, + "nodeType": "ExpressionStatement", + "src": "7586:138:0" + } + ] }, - "id": 590, + "id": 588, "nodeType": "IfStatement", - "src": "7392:353:0", + "src": "7392:343:0", "trueBody": { "id": 569, "nodeType": "Block", @@ -22395,7 +22338,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, + "referencedDeclaration": 1243, "src": "7524:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -22512,7 +22455,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1207, + "referencedDeclaration": 1203, "src": "7463:47:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -22549,7 +22492,7 @@ ] }, "documentation": null, - "id": 592, + "id": 590, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -22563,7 +22506,7 @@ "name": "onlyContributor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1069, + "referencedDeclaration": 1065, "src": "6771:15:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -22582,7 +22525,7 @@ "name": "onlyRaised", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, + "referencedDeclaration": 1036, "src": "6787:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -22601,7 +22544,7 @@ "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 1027, "src": "6798:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -22623,7 +22566,7 @@ "id": 482, "name": "index", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "6741:10:0", "stateVariable": false, "storageLocation": "default", @@ -22649,7 +22592,7 @@ "id": 484, "name": "vote", "nodeType": "VariableDeclaration", - "scope": 592, + "scope": 590, "src": "6753:9:0", "stateVariable": false, "storageLocation": "default", @@ -22680,30 +22623,30 @@ "parameters": [], "src": "6811:0:0" }, - "scope": 1080, - "src": "6712:1039:0", + "scope": 1076, + "src": "6712:1029:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 678, + "id": 676, "nodeType": "Block", - "src": "7828:890:0", + "src": "7818:890:0", "statements": [ { "assignments": [ - 602 + 600 ], "declarations": [ { "constant": false, - "id": 602, + "id": 600, "name": "voteDeadlineHasPassed", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "7838:26:0", + "scope": 677, + "src": "7828:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -22711,10 +22654,10 @@ "typeString": "bool" }, "typeName": { - "id": 601, + "id": 599, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "7838:4:0", + "src": "7828:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22724,14 +22667,14 @@ "visibility": "internal" } ], - "id": 609, + "id": 607, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 608, + "id": 606, "isConstant": false, "isLValue": false, "isPure": false, @@ -22742,26 +22685,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 603, + "id": 601, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "7867:10:0", + "src": "7857:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 605, + "id": 603, "indexExpression": { "argumentTypes": null, - "id": 604, + "id": 602, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "7878:5:0", + "referencedDeclaration": 592, + "src": "7868:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22772,13 +22715,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7867:17:0", + "src": "7857:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 606, + "id": 604, "isConstant": false, "isLValue": true, "isPure": false, @@ -22786,7 +22729,7 @@ "memberName": "payoutRequestVoteDeadline", "nodeType": "MemberAccess", "referencedDeclaration": 17, - "src": "7867:43:0", + "src": "7857:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22796,38 +22739,38 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 607, + "id": 605, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "7913:3:0", + "referencedDeclaration": 1245, + "src": "7903:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7867:49:0", + "src": "7857:49:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "7838:78:0" + "src": "7828:78:0" }, { "assignments": [ - 611 + 609 ], "declarations": [ { "constant": false, - "id": 611, + "id": 609, "name": "majorityVotedNo", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "7926:20:0", + "scope": 677, + "src": "7916:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -22835,10 +22778,10 @@ "typeString": "bool" }, "typeName": { - "id": 610, + "id": 608, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "7926:4:0", + "src": "7916:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22848,7 +22791,7 @@ "visibility": "internal" } ], - "id": 618, + "id": 616, "initialValue": { "argumentTypes": null, "arguments": [ @@ -22858,26 +22801,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 613, + "id": 611, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "7966:10:0", + "src": "7956:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 615, + "id": 613, "indexExpression": { "argumentTypes": null, - "id": 614, + "id": 612, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "7977:5:0", + "referencedDeclaration": 592, + "src": "7967:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22888,13 +22831,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7966:17:0", + "src": "7956:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 616, + "id": 614, "isConstant": false, "isLValue": true, "isPure": false, @@ -22902,7 +22845,7 @@ "memberName": "amountVotingAgainstPayout", "nodeType": "MemberAccess", "referencedDeclaration": 15, - "src": "7966:43:0", + "src": "7956:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22916,18 +22859,18 @@ "typeString": "uint256" } ], - "id": 612, + "id": 610, "name": "isMajorityVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "7949:16:0", + "referencedDeclaration": 924, + "src": "7939:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 617, + "id": 615, "isConstant": false, "isLValue": false, "isPure": false, @@ -22935,27 +22878,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7949:61:0", + "src": "7939:61:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "7926:84:0" + "src": "7916:84:0" }, { "assignments": [ - 620 + 618 ], "declarations": [ { "constant": false, - "id": 620, + "id": 618, "name": "milestoneAlreadyPaid", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "8020:25:0", + "scope": 677, + "src": "8010:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -22963,10 +22906,10 @@ "typeString": "bool" }, "typeName": { - "id": 619, + "id": 617, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "8020:4:0", + "src": "8010:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22976,33 +22919,33 @@ "visibility": "internal" } ], - "id": 625, + "id": 623, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 621, + "id": 619, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8048:10:0", + "src": "8038:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 623, + "id": 621, "indexExpression": { "argumentTypes": null, - "id": 622, + "id": 620, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8059:5:0", + "referencedDeclaration": 592, + "src": "8049:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23013,13 +22956,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8048:17:0", + "src": "8038:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 624, + "id": 622, "isConstant": false, "isLValue": true, "isPure": false, @@ -23027,14 +22970,14 @@ "memberName": "paid", "nodeType": "MemberAccess", "referencedDeclaration": 19, - "src": "8048:22:0", + "src": "8038:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "8020:50:0" + "src": "8010:50:0" }, { "condition": { @@ -23043,7 +22986,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 632, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -23054,19 +22997,19 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 629, + "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 626, + "id": 624, "name": "voteDeadlineHasPassed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 602, - "src": "8084:21:0", + "referencedDeclaration": 600, + "src": "8074:21:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23076,7 +23019,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 628, + "id": 626, "isConstant": false, "isLValue": false, "isPure": false, @@ -23084,15 +23027,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "8109:16:0", + "src": "8099:16:0", "subExpression": { "argumentTypes": null, - "id": 627, + "id": 625, "name": "majorityVotedNo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, - "src": "8110:15:0", + "referencedDeclaration": 609, + "src": "8100:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23103,7 +23046,7 @@ "typeString": "bool" } }, - "src": "8084:41:0", + "src": "8074:41:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23113,7 +23056,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 631, + "id": 629, "isConstant": false, "isLValue": false, "isPure": false, @@ -23121,15 +23064,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "8129:21:0", + "src": "8119:21:0", "subExpression": { "argumentTypes": null, - "id": 630, + "id": 628, "name": "milestoneAlreadyPaid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "8130:20:0", + "referencedDeclaration": 618, + "src": "8120:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23140,16 +23083,16 @@ "typeString": "bool" } }, - "src": "8084:66:0", + "src": "8074:66:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 676, + "id": 674, "nodeType": "Block", - "src": "8639:73:0", + "src": "8629:73:0", "statements": [ { "expression": { @@ -23158,14 +23101,14 @@ { "argumentTypes": null, "hexValue": "726571756972656420636f6e646974696f6e732077657265206e6f7420736174697366696564", - "id": 673, + "id": 671, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8660:40:0", + "src": "8650:40:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c944a403407a4b450cdf033de02e1e093564ed6120fdd470c5daee653f2d6a87", @@ -23181,21 +23124,21 @@ "typeString": "literal_string \"required conditions were not satisfied\"" } ], - "id": 672, + "id": 670, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 1252, - 1253 + 1248, + 1249 ], - "referencedDeclaration": 1253, - "src": "8653:6:0", + "referencedDeclaration": 1249, + "src": "8643:6:0", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 674, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -23203,30 +23146,30 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8653:48:0", + "src": "8643:48:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 675, + "id": 673, "nodeType": "ExpressionStatement", - "src": "8653:48:0" + "src": "8643:48:0" } ] }, - "id": 677, + "id": 675, "nodeType": "IfStatement", - "src": "8080:632:0", + "src": "8070:632:0", "trueBody": { - "id": 671, + "id": 669, "nodeType": "Block", - "src": "8152:481:0", + "src": "8142:481:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 638, + "id": 636, "isConstant": false, "isLValue": false, "isPure": false, @@ -23237,26 +23180,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 633, + "id": 631, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8166:10:0", + "src": "8156:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 635, + "id": 633, "indexExpression": { "argumentTypes": null, - "id": 634, + "id": 632, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8177:5:0", + "referencedDeclaration": 592, + "src": "8167:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23267,13 +23210,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8166:17:0", + "src": "8156:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 636, + "id": 634, "isConstant": false, "isLValue": true, "isPure": false, @@ -23281,7 +23224,7 @@ "memberName": "paid", "nodeType": "MemberAccess", "referencedDeclaration": 19, - "src": "8166:22:0", + "src": "8156:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23292,14 +23235,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 637, + "id": 635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "8191:4:0", + "src": "8181:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -23307,28 +23250,28 @@ }, "value": "true" }, - "src": "8166:29:0", + "src": "8156:29:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 639, + "id": 637, "nodeType": "ExpressionStatement", - "src": "8166:29:0" + "src": "8156:29:0" }, { "assignments": [ - 641 + 639 ], "declarations": [ { "constant": false, - "id": 641, + "id": 639, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "8209:11:0", + "scope": 677, + "src": "8199:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23336,10 +23279,10 @@ "typeString": "uint256" }, "typeName": { - "id": 640, + "id": 638, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "8209:4:0", + "src": "8199:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23349,33 +23292,33 @@ "visibility": "internal" } ], - "id": 646, + "id": 644, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 642, + "id": 640, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8223:10:0", + "src": "8213:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 644, + "id": 642, "indexExpression": { "argumentTypes": null, - "id": 643, + "id": 641, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8234:5:0", + "referencedDeclaration": 592, + "src": "8224:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23386,13 +23329,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8223:17:0", + "src": "8213:17:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Milestone_$20_storage", "typeString": "struct CrowdFund.Milestone storage ref" } }, - "id": 645, + "id": 643, "isConstant": false, "isLValue": true, "isPure": false, @@ -23400,14 +23343,14 @@ "memberName": "amount", "nodeType": "MemberAccess", "referencedDeclaration": 13, - "src": "8223:24:0", + "src": "8213:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "8209:38:0" + "src": "8199:38:0" }, { "expression": { @@ -23415,12 +23358,12 @@ "arguments": [ { "argumentTypes": null, - "id": 650, + "id": 648, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "8282:6:0", + "referencedDeclaration": 639, + "src": "8272:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23436,18 +23379,18 @@ ], "expression": { "argumentTypes": null, - "id": 647, + "id": 645, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "8261:11:0", + "src": "8251:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 649, + "id": 647, "isConstant": false, "isLValue": false, "isPure": false, @@ -23455,13 +23398,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8261:20:0", + "src": "8251:20:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 651, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -23469,15 +23412,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8261:28:0", + "src": "8251:28:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 652, + "id": 650, "nodeType": "ExpressionStatement", - "src": "8261:28:0" + "src": "8251:28:0" }, { "eventCall": { @@ -23485,12 +23428,12 @@ "arguments": [ { "argumentTypes": null, - "id": 654, + "id": 652, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "8318:11:0", + "src": "8308:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23498,12 +23441,12 @@ }, { "argumentTypes": null, - "id": 655, + "id": 653, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "8331:6:0", + "referencedDeclaration": 639, + "src": "8321:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23521,18 +23464,18 @@ "typeString": "uint256" } ], - "id": 653, + "id": 651, "name": "Withdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, - "src": "8308:9:0", + "src": "8298:9:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 656, + "id": 654, "isConstant": false, "isLValue": false, "isPure": false, @@ -23540,15 +23483,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8308:30:0", + "src": "8298:30:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 657, + "id": 655, "nodeType": "EmitStatement", - "src": "8303:35:0" + "src": "8293:35:0" }, { "condition": { @@ -23557,7 +23500,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 664, + "id": 662, "isConstant": false, "isLValue": false, "isPure": false, @@ -23567,12 +23510,12 @@ "arguments": [ { "argumentTypes": null, - "id": 661, + "id": 659, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, - "src": "8430:5:0", + "referencedDeclaration": 592, + "src": "8420:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23590,18 +23533,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 658, + "id": 656, "name": "milestones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, - "src": "8408:10:0", + "src": "8398:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Milestone_$20_storage_$dyn_storage", "typeString": "struct CrowdFund.Milestone storage ref[] storage ref" } }, - "id": 659, + "id": 657, "isConstant": false, "isLValue": true, "isPure": false, @@ -23609,27 +23552,27 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8408:17:0", + "src": "8398:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 660, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 1207, - "src": "8408:21:0", + "referencedDeclaration": 1203, + "src": "8398:21:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 662, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, @@ -23637,7 +23580,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8408:28:0", + "src": "8398:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23648,14 +23591,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 663, + "id": 661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8440:1:0", + "src": "8430:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -23663,20 +23606,20 @@ }, "value": "1" }, - "src": "8408:33:0", + "src": "8398:33:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 670, + "id": 668, "nodeType": "IfStatement", - "src": "8404:219:0", + "src": "8394:219:0", "trueBody": { - "id": 669, + "id": 667, "nodeType": "Block", - "src": "8443:180:0", + "src": "8433:180:0", "statements": [ { "expression": { @@ -23684,12 +23627,12 @@ "arguments": [ { "argumentTypes": null, - "id": 666, + "id": 664, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "8596:11:0", + "src": "8586:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23703,18 +23646,18 @@ "typeString": "address" } ], - "id": 665, + "id": 663, "name": "selfdestruct", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1255, - "src": "8583:12:0", + "referencedDeclaration": 1251, + "src": "8573:12:0", "typeDescriptions": { "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 667, + "id": 665, "isConstant": false, "isLValue": false, "isPure": false, @@ -23722,15 +23665,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8583:25:0", + "src": "8573:25:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 668, + "id": 666, "nodeType": "ExpressionStatement", - "src": "8583:25:0" + "src": "8573:25:0" } ] } @@ -23741,63 +23684,63 @@ ] }, "documentation": null, - "id": 679, + "id": 677, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 595, + "modifierName": { + "argumentTypes": null, + "id": 594, + "name": "onlyRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1036, + "src": "7794:10:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7794:10:0" + }, { "arguments": null, "id": 597, "modifierName": { "argumentTypes": null, "id": 596, - "name": "onlyRaised", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "7804:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7804:10:0" - }, - { - "arguments": null, - "id": 599, - "modifierName": { - "argumentTypes": null, - "id": 598, "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, - "src": "7815:12:0", + "referencedDeclaration": 1027, + "src": "7805:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "7815:12:0" + "src": "7805:12:0" } ], "name": "payMilestonePayout", "nodeType": "FunctionDefinition", "parameters": { - "id": 595, + "id": 593, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 594, + "id": 592, "name": "index", "nodeType": "VariableDeclaration", - "scope": 679, - "src": "7785:10:0", + "scope": 677, + "src": "7775:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23805,10 +23748,10 @@ "typeString": "uint256" }, "typeName": { - "id": 593, + "id": 591, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "7785:4:0", + "src": "7775:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23818,39 +23761,39 @@ "visibility": "internal" } ], - "src": "7784:12:0" + "src": "7774:12:0" }, "payable": false, "returnParameters": { - "id": 600, + "id": 598, "nodeType": "ParameterList", "parameters": [], - "src": "7828:0:0" + "src": "7818:0:0" }, - "scope": 1080, - "src": "7757:961:0", + "scope": 1076, + "src": "7747:961:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 742, + "id": 738, "nodeType": "Block", - "src": "8802:491:0", + "src": "8792:473:0", "statements": [ { "assignments": [ - 691 + 689 ], "declarations": [ { "constant": false, - "id": 691, + "id": 689, "name": "refundVote", "nodeType": "VariableDeclaration", - "scope": 743, - "src": "8812:15:0", + "scope": 739, + "src": "8802:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23858,10 +23801,10 @@ "typeString": "bool" }, "typeName": { - "id": 690, + "id": 688, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "8812:4:0", + "src": "8802:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23871,41 +23814,41 @@ "visibility": "internal" } ], - "id": 697, + "id": 695, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 692, + "id": 690, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "8830:12:0", + "src": "8820:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 695, + "id": 693, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 693, + "id": 691, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "8843:3:0", + "referencedDeclaration": 1243, + "src": "8833:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 694, + "id": 692, "isConstant": false, "isLValue": false, "isPure": false, @@ -23913,7 +23856,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8843:10:0", + "src": "8833:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23924,13 +23867,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8830:24:0", + "src": "8820:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 696, + "id": 694, "isConstant": false, "isLValue": true, "isPure": false, @@ -23938,14 +23881,14 @@ "memberName": "refundVote", "nodeType": "MemberAccess", "referencedDeclaration": 27, - "src": "8830:35:0", + "src": "8820:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "8812:53:0" + "src": "8802:53:0" }, { "expression": { @@ -23957,19 +23900,19 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 701, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 699, + "id": 697, "name": "vote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "8883:4:0", + "referencedDeclaration": 679, + "src": "8873:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23979,18 +23922,18 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 700, + "id": 698, "name": "refundVote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 691, - "src": "8891:10:0", + "referencedDeclaration": 689, + "src": "8881:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "8883:18:0", + "src": "8873:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23999,14 +23942,14 @@ { "argumentTypes": null, "hexValue": "4578697374696e6720766f7465207374617465206973206964656e746963616c20746f20766f74652076616c7565", - "id": 702, + "id": 700, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8903:48:0", + "src": "8893:48:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_83d9b841f406ef52e32942228e28c13fcdb47e5fa9512f22f335b7955cb71cb5", @@ -24026,21 +23969,21 @@ "typeString": "literal_string \"Existing vote state is identical to vote value\"" } ], - "id": 698, + "id": 696, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "8875:7:0", + "referencedDeclaration": 1247, + "src": "8865:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 703, + "id": 701, "isConstant": false, "isLValue": false, "isPure": false, @@ -24048,20 +23991,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8875:77:0", + "src": "8865:77:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 704, + "id": 702, "nodeType": "ExpressionStatement", - "src": "8875:77:0" + "src": "8865:77:0" }, { "expression": { "argumentTypes": null, - "id": 711, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, @@ -24072,34 +24015,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 705, + "id": 703, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "8962:12:0", + "src": "8952:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 708, + "id": 706, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 706, + "id": 704, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "8975:3:0", + "referencedDeclaration": 1243, + "src": "8965:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 707, + "id": 705, "isConstant": false, "isLValue": false, "isPure": false, @@ -24107,7 +24050,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "8975:10:0", + "src": "8965:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -24118,13 +24061,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8962:24:0", + "src": "8952:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 709, + "id": 707, "isConstant": false, "isLValue": true, "isPure": false, @@ -24132,7 +24075,7 @@ "memberName": "refundVote", "nodeType": "MemberAccess", "referencedDeclaration": 27, - "src": "8962:35:0", + "src": "8952:35:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24142,31 +24085,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 710, + "id": 708, "name": "vote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "9000:4:0", + "referencedDeclaration": 679, + "src": "8990:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "8962:42:0", + "src": "8952:42:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 712, + "id": 710, "nodeType": "ExpressionStatement", - "src": "8962:42:0" + "src": "8952:42:0" }, { "condition": { "argumentTypes": null, - "id": 714, + "id": 712, "isConstant": false, "isLValue": false, "isPure": false, @@ -24174,15 +24117,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "9018:5:0", + "src": "9008:5:0", "subExpression": { "argumentTypes": null, - "id": 713, + "id": 711, "name": "vote", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "9019:4:0", + "referencedDeclaration": 679, + "src": "9009:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24194,212 +24137,26 @@ } }, "falseBody": { - "condition": { - "argumentTypes": null, - "id": 727, - "name": "vote", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 681, - "src": "9162:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 740, - "nodeType": "IfStatement", - "src": "9158:129:0", - "trueBody": { - "id": 739, - "nodeType": "Block", - "src": "9168:119:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 728, - "name": "amountVotingForRefund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62, - "src": "9182:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 731, - "name": "contributors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68, - "src": "9232:12:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", - "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" - } - }, - "id": 734, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 732, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "9245:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 733, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9245:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9232:24:0", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Contributor_$30_storage", - "typeString": "struct CrowdFund.Contributor storage ref" - } - }, - "id": 735, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "contributionAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 22, - "src": "9232:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 729, - "name": "amountVotingForRefund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62, - "src": "9206:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 1231, - "src": "9206:25:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9206:70:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9182:94:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 738, - "nodeType": "ExpressionStatement", - "src": "9182:94:0" - } - ] - } - }, - "id": 741, - "nodeType": "IfStatement", - "src": "9014:273:0", - "trueBody": { - "id": 726, + "id": 736, "nodeType": "Block", - "src": "9025:119:0", + "src": "9140:119:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 724, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 715, + "id": 725, "name": "amountVotingForRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, - "src": "9039:21:0", + "src": "9154:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24416,34 +24173,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 718, + "id": 728, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "9089:12:0", + "src": "9204:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 721, + "id": 731, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 719, + "id": 729, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "9102:3:0", + "referencedDeclaration": 1243, + "src": "9217:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 720, + "id": 730, "isConstant": false, "isLValue": false, "isPure": false, @@ -24451,7 +24208,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9102:10:0", + "src": "9217:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -24462,13 +24219,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "9089:24:0", + "src": "9204:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 722, + "id": 732, "isConstant": false, "isLValue": true, "isPure": false, @@ -24476,7 +24233,7 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "9089:43:0", + "src": "9204:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24492,32 +24249,32 @@ ], "expression": { "argumentTypes": null, - "id": 716, + "id": 726, "name": "amountVotingForRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, - "src": "9063:21:0", + "src": "9178:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 717, + "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "sub", + "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 1207, - "src": "9063:25:0", + "referencedDeclaration": 1227, + "src": "9178:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 723, + "id": 733, "isConstant": false, "isLValue": false, "isPure": false, @@ -24525,21 +24282,188 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9063:70:0", + "src": "9178:70:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9039:94:0", + "src": "9154:94:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 725, + "id": 735, "nodeType": "ExpressionStatement", - "src": "9039:94:0" + "src": "9154:94:0" + } + ] + }, + "id": 737, + "nodeType": "IfStatement", + "src": "9004:255:0", + "trueBody": { + "id": 724, + "nodeType": "Block", + "src": "9015:119:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 713, + "name": "amountVotingForRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "9029:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 716, + "name": "contributors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "9079:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", + "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" + } + }, + "id": 719, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 717, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1243, + "src": "9092:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9092:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9079:24:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Contributor_$30_storage", + "typeString": "struct CrowdFund.Contributor storage ref" + } + }, + "id": 720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contributionAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "9079:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 714, + "name": "amountVotingForRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 62, + "src": "9053:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 1203, + "src": "9053:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9053:70:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9029:94:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 723, + "nodeType": "ExpressionStatement", + "src": "9029:94:0" } ] } @@ -24547,29 +24471,48 @@ ] }, "documentation": null, - "id": 743, + "id": 739, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 684, + "id": 682, "modifierName": { "argumentTypes": null, - "id": 683, + "id": 681, "name": "onlyContributor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1069, - "src": "8762:15:0", + "referencedDeclaration": 1065, + "src": "8752:15:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "8762:15:0" + "src": "8752:15:0" + }, + { + "arguments": null, + "id": 684, + "modifierName": { + "argumentTypes": null, + "id": 683, + "name": "onlyRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1036, + "src": "8768:10:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8768:10:0" }, { "arguments": null, @@ -24577,52 +24520,33 @@ "modifierName": { "argumentTypes": null, "id": 685, - "name": "onlyRaised", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "8778:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "8778:10:0" - }, - { - "arguments": null, - "id": 688, - "modifierName": { - "argumentTypes": null, - "id": 687, "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, - "src": "8789:12:0", + "referencedDeclaration": 1027, + "src": "8779:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "8789:12:0" + "src": "8779:12:0" } ], "name": "voteRefund", "nodeType": "FunctionDefinition", "parameters": { - "id": 682, + "id": 680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 681, + "id": 679, "name": "vote", "nodeType": "VariableDeclaration", - "scope": 743, - "src": "8744:9:0", + "scope": 739, + "src": "8734:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24630,10 +24554,10 @@ "typeString": "bool" }, "typeName": { - "id": 680, + "id": 678, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "8744:4:0", + "src": "8734:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24643,39 +24567,39 @@ "visibility": "internal" } ], - "src": "8743:11:0" + "src": "8733:11:0" }, "payable": false, "returnParameters": { - "id": 689, + "id": 687, "nodeType": "ParameterList", "parameters": [], - "src": "8802:0:0" + "src": "8792:0:0" }, - "scope": 1080, - "src": "8724:569:0", + "scope": 1076, + "src": "8714:551:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 806, + "id": 802, "nodeType": "Block", - "src": "9337:655:0", + "src": "9309:655:0", "statements": [ { "assignments": [ - 749 + 745 ], "declarations": [ { "constant": false, - "id": 749, + "id": 745, "name": "callerIsTrustee", "nodeType": "VariableDeclaration", - "scope": 807, - "src": "9347:20:0", + "scope": 803, + "src": "9319:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24683,10 +24607,10 @@ "typeString": "bool" }, "typeName": { - "id": 748, + "id": 744, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9347:4:0", + "src": "9319:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24696,24 +24620,24 @@ "visibility": "internal" } ], - "id": 752, + "id": 748, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 750, + "id": 746, "name": "isCallerTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "9370:15:0", + "referencedDeclaration": 955, + "src": "9342:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 751, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -24721,27 +24645,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9370:17:0", + "src": "9342:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "9347:40:0" + "src": "9319:40:0" }, { "assignments": [ - 754 + 750 ], "declarations": [ { "constant": false, - "id": 754, + "id": 750, "name": "crowdFundFailed", "nodeType": "VariableDeclaration", - "scope": 807, - "src": "9397:20:0", + "scope": 803, + "src": "9369:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24749,10 +24673,10 @@ "typeString": "bool" }, "typeName": { - "id": 753, + "id": 749, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9397:4:0", + "src": "9369:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24762,24 +24686,24 @@ "visibility": "internal" } ], - "id": 757, + "id": 753, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 755, + "id": 751, "name": "isFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 972, - "src": "9420:8:0", + "referencedDeclaration": 968, + "src": "9392:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 756, + "id": 752, "isConstant": false, "isLValue": false, "isPure": false, @@ -24787,27 +24711,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9420:10:0", + "src": "9392:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "9397:33:0" + "src": "9369:33:0" }, { "assignments": [ - 759 + 755 ], "declarations": [ { "constant": false, - "id": 759, + "id": 755, "name": "majorityVotingToRefund", "nodeType": "VariableDeclaration", - "scope": 807, - "src": "9440:27:0", + "scope": 803, + "src": "9412:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24815,10 +24739,10 @@ "typeString": "bool" }, "typeName": { - "id": 758, + "id": 754, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9440:4:0", + "src": "9412:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24828,18 +24752,18 @@ "visibility": "internal" } ], - "id": 763, + "id": 759, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 761, + "id": 757, "name": "amountVotingForRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62, - "src": "9487:21:0", + "src": "9459:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24853,18 +24777,18 @@ "typeString": "uint256" } ], - "id": 760, + "id": 756, "name": "isMajorityVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "9470:16:0", + "referencedDeclaration": 924, + "src": "9442:16:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, - "id": 762, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, @@ -24872,14 +24796,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9470:39:0", + "src": "9442:39:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "9440:69:0" + "src": "9412:69:0" }, { "expression": { @@ -24891,7 +24815,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 769, + "id": 765, "isConstant": false, "isLValue": false, "isPure": false, @@ -24902,19 +24826,19 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 767, + "id": 763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 765, + "id": 761, "name": "callerIsTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "9527:15:0", + "referencedDeclaration": 745, + "src": "9499:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24924,18 +24848,18 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 766, + "id": 762, "name": "crowdFundFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, - "src": "9546:15:0", + "referencedDeclaration": 750, + "src": "9518:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "9527:34:0", + "src": "9499:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24945,18 +24869,18 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 768, + "id": 764, "name": "majorityVotingToRefund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "9565:22:0", + "referencedDeclaration": 755, + "src": "9537:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "9527:60:0", + "src": "9499:60:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24965,14 +24889,14 @@ { "argumentTypes": null, "hexValue": "526571756972656420636f6e646974696f6e7320666f7220726566756e6420617265206e6f74206d6574", - "id": 770, + "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9589:44:0", + "src": "9561:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1086fb0a245a80bddbec2bbf87c88d8fc142025bee989551e1ac5ccca15d31ff", @@ -24992,21 +24916,21 @@ "typeString": "literal_string \"Required conditions for refund are not met\"" } ], - "id": 764, + "id": 760, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "9519:7:0", + "referencedDeclaration": 1247, + "src": "9491:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 771, + "id": 767, "isConstant": false, "isLValue": false, "isPure": false, @@ -25014,25 +24938,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9519:115:0", + "src": "9491:115:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 772, + "id": 768, "nodeType": "ExpressionStatement", - "src": "9519:115:0" + "src": "9491:115:0" }, { "condition": { "argumentTypes": null, - "id": 773, + "id": 769, "name": "callerIsTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "9648:15:0", + "referencedDeclaration": 745, + "src": "9620:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25041,38 +24965,38 @@ "falseBody": { "condition": { "argumentTypes": null, - "id": 780, + "id": 776, "name": "crowdFundFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, - "src": "9745:15:0", + "referencedDeclaration": 750, + "src": "9717:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 792, + "id": 788, "nodeType": "Block", - "src": "9838:78:0", + "src": "9810:78:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 790, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 787, + "id": 783, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "9852:12:0", + "src": "9824:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -25084,18 +25008,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 788, + "id": 784, "name": "FreezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, - "src": "9867:12:0", + "src": "9839:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_FreezeReason_$9_$", "typeString": "type(enum CrowdFund.FreezeReason)" } }, - "id": 789, + "id": 785, "isConstant": false, "isLValue": false, "isPure": true, @@ -25103,48 +25027,48 @@ "memberName": "MAJORITY_VOTING_TO_REFUND", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9867:38:0", + "src": "9839:38:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "src": "9852:53:0", + "src": "9824:53:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "id": 791, + "id": 787, "nodeType": "ExpressionStatement", - "src": "9852:53:0" + "src": "9824:53:0" } ] }, - "id": 793, + "id": 789, "nodeType": "IfStatement", - "src": "9741:175:0", + "src": "9713:175:0", "trueBody": { - "id": 786, + "id": 782, "nodeType": "Block", - "src": "9762:70:0", + "src": "9734:70:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 784, + "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 781, + "id": 777, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "9776:12:0", + "src": "9748:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -25156,18 +25080,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 782, + "id": 778, "name": "FreezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, - "src": "9791:12:0", + "src": "9763:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_FreezeReason_$9_$", "typeString": "type(enum CrowdFund.FreezeReason)" } }, - "id": 783, + "id": 779, "isConstant": false, "isLValue": false, "isPure": true, @@ -25175,49 +25099,49 @@ "memberName": "CROWD_FUND_FAILED", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9791:30:0", + "src": "9763:30:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "src": "9776:45:0", + "src": "9748:45:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "id": 785, + "id": 781, "nodeType": "ExpressionStatement", - "src": "9776:45:0" + "src": "9748:45:0" } ] } }, - "id": 794, + "id": 790, "nodeType": "IfStatement", - "src": "9644:272:0", + "src": "9616:272:0", "trueBody": { - "id": 779, + "id": 775, "nodeType": "Block", - "src": "9665:70:0", + "src": "9637:70:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 777, + "id": 773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 774, + "id": 770, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "9679:12:0", + "src": "9651:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -25229,18 +25153,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 775, + "id": 771, "name": "FreezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, - "src": "9694:12:0", + "src": "9666:12:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_FreezeReason_$9_$", "typeString": "type(enum CrowdFund.FreezeReason)" } }, - "id": 776, + "id": 772, "isConstant": false, "isLValue": false, "isPure": true, @@ -25248,21 +25172,21 @@ "memberName": "CALLER_IS_TRUSTEE", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9694:30:0", + "src": "9666:30:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "src": "9679:45:0", + "src": "9651:45:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" } }, - "id": 778, + "id": 774, "nodeType": "ExpressionStatement", - "src": "9679:45:0" + "src": "9651:45:0" } ] } @@ -25270,19 +25194,19 @@ { "expression": { "argumentTypes": null, - "id": 797, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 795, + "id": 791, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "9925:6:0", + "src": "9897:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25293,14 +25217,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 796, + "id": 792, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "9934:4:0", + "src": "9906:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -25308,32 +25232,32 @@ }, "value": "true" }, - "src": "9925:13:0", + "src": "9897:13:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 798, + "id": 794, "nodeType": "ExpressionStatement", - "src": "9925:13:0" + "src": "9897:13:0" }, { "expression": { "argumentTypes": null, - "id": 804, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 799, + "id": 795, "name": "frozenBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 58, - "src": "9948:13:0", + "src": "9920:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25348,14 +25272,14 @@ "arguments": [ { "argumentTypes": null, - "id": 801, + "id": 797, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "9972:4:0", + "referencedDeclaration": 1258, + "src": "9944:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } } @@ -25363,24 +25287,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } ], - "id": 800, + "id": 796, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9964:7:0", + "src": "9936:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 802, + "id": 798, "isConstant": false, "isLValue": false, "isPure": false, @@ -25388,13 +25312,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "9964:13:0", + "src": "9936:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 803, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -25402,76 +25326,76 @@ "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "9964:21:0", + "src": "9936:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "9948:37:0", + "src": "9920:37:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 805, + "id": 801, "nodeType": "ExpressionStatement", - "src": "9948:37:0" + "src": "9920:37:0" } ] }, "documentation": null, - "id": 807, + "id": 803, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 746, + "id": 742, "modifierName": { "argumentTypes": null, - "id": 745, + "id": 741, "name": "onlyUnfrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, - "src": "9324:12:0", + "referencedDeclaration": 1027, + "src": "9296:12:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "9324:12:0" + "src": "9296:12:0" } ], "name": "refund", "nodeType": "FunctionDefinition", "parameters": { - "id": 744, + "id": 740, "nodeType": "ParameterList", "parameters": [], - "src": "9314:2:0" + "src": "9286:2:0" }, "payable": false, "returnParameters": { - "id": 747, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "9337:0:0" + "src": "9309:0:0" }, - "scope": 1080, - "src": "9299:693:0", + "scope": 1076, + "src": "9271:693:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 870, + "id": 866, "nodeType": "Block", - "src": "10127:528:0", + "src": "10099:528:0", "statements": [ { "expression": { @@ -25479,12 +25403,12 @@ "arguments": [ { "argumentTypes": null, - "id": 815, + "id": 811, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "10145:6:0", + "src": "10117:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25493,14 +25417,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e64206973206e6f742066726f7a656e", - "id": 816, + "id": 812, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10153:25:0", + "src": "10125:25:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_144124cc12823f56a1037eeced499cee1638a07fba8aa0ce757da7cf592192bf", @@ -25520,21 +25444,21 @@ "typeString": "literal_string \"CrowdFund is not frozen\"" } ], - "id": 814, + "id": 810, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "10137:7:0", + "referencedDeclaration": 1247, + "src": "10109:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 817, + "id": 813, "isConstant": false, "isLValue": false, "isPure": false, @@ -25542,28 +25466,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10137:42:0", + "src": "10109:42:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 818, + "id": 814, "nodeType": "ExpressionStatement", - "src": "10137:42:0" + "src": "10109:42:0" }, { "assignments": [ - 820 + 816 ], "declarations": [ { "constant": false, - "id": 820, + "id": 816, "name": "isRefunded", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10189:15:0", + "scope": 867, + "src": "10161:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -25571,10 +25495,10 @@ "typeString": "bool" }, "typeName": { - "id": 819, + "id": 815, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "10189:4:0", + "src": "10161:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25584,33 +25508,33 @@ "visibility": "internal" } ], - "id": 825, + "id": 821, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 821, + "id": 817, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10207:12:0", + "src": "10179:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 823, + "id": 819, "indexExpression": { "argumentTypes": null, - "id": 822, + "id": 818, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10220:13:0", + "referencedDeclaration": 805, + "src": "10192:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -25621,13 +25545,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10207:27:0", + "src": "10179:27:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 824, + "id": 820, "isConstant": false, "isLValue": true, "isPure": false, @@ -25635,14 +25559,14 @@ "memberName": "refunded", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "10207:36:0", + "src": "10179:36:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "10189:54:0" + "src": "10161:54:0" }, { "expression": { @@ -25650,7 +25574,7 @@ "arguments": [ { "argumentTypes": null, - "id": 828, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, @@ -25658,15 +25582,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "10261:11:0", + "src": "10233:11:0", "subExpression": { "argumentTypes": null, - "id": 827, + "id": 823, "name": "isRefunded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "10262:10:0", + "referencedDeclaration": 816, + "src": "10234:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25680,14 +25604,14 @@ { "argumentTypes": null, "hexValue": "537065636966696564206164647265737320697320616c726561647920726566756e646564", - "id": 829, + "id": 825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10274:39:0", + "src": "10246:39:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad918abf6ea38b3d8dd6fccfc0198c349db0339300085e3846f4b85c44350efa", @@ -25707,21 +25631,21 @@ "typeString": "literal_string \"Specified address is already refunded\"" } ], - "id": 826, + "id": 822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "10253:7:0", + "referencedDeclaration": 1247, + "src": "10225:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 830, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -25729,20 +25653,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10253:61:0", + "src": "10225:61:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 831, + "id": 827, "nodeType": "ExpressionStatement", - "src": "10253:61:0" + "src": "10225:61:0" }, { "expression": { "argumentTypes": null, - "id": 837, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -25753,26 +25677,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 832, + "id": 828, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10324:12:0", + "src": "10296:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 834, + "id": 830, "indexExpression": { "argumentTypes": null, - "id": 833, + "id": 829, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10337:13:0", + "referencedDeclaration": 805, + "src": "10309:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -25783,13 +25707,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10324:27:0", + "src": "10296:27:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 835, + "id": 831, "isConstant": false, "isLValue": true, "isPure": false, @@ -25797,7 +25721,7 @@ "memberName": "refunded", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "10324:36:0", + "src": "10296:36:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25808,14 +25732,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 836, + "id": 832, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "10363:4:0", + "src": "10335:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -25823,28 +25747,28 @@ }, "value": "true" }, - "src": "10324:43:0", + "src": "10296:43:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 838, + "id": 834, "nodeType": "ExpressionStatement", - "src": "10324:43:0" + "src": "10296:43:0" }, { "assignments": [ - 840 + 836 ], "declarations": [ { "constant": false, - "id": 840, + "id": 836, "name": "contributionAmount", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10377:23:0", + "scope": 867, + "src": "10349:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -25852,10 +25776,10 @@ "typeString": "uint256" }, "typeName": { - "id": 839, + "id": 835, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "10377:4:0", + "src": "10349:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25865,33 +25789,33 @@ "visibility": "internal" } ], - "id": 845, + "id": 841, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 841, + "id": 837, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10403:12:0", + "src": "10375:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 843, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 842, + "id": 838, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10416:13:0", + "referencedDeclaration": 805, + "src": "10388:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -25902,13 +25826,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10403:27:0", + "src": "10375:27:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 844, + "id": 840, "isConstant": false, "isLValue": true, "isPure": false, @@ -25916,27 +25840,27 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "10403:46:0", + "src": "10375:46:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "10377:72:0" + "src": "10349:72:0" }, { "assignments": [ - 847 + 843 ], "declarations": [ { "constant": false, - "id": 847, + "id": 843, "name": "amountToRefund", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10459:19:0", + "scope": 867, + "src": "10431:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -25944,10 +25868,10 @@ "typeString": "uint256" }, "typeName": { - "id": 846, + "id": 842, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "10459:4:0", + "src": "10431:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25957,18 +25881,18 @@ "visibility": "internal" } ], - "id": 858, + "id": 854, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 856, + "id": 852, "name": "frozenBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 58, - "src": "10531:13:0", + "src": "10503:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25992,14 +25916,14 @@ "arguments": [ { "argumentTypes": null, - "id": 851, + "id": 847, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "10512:4:0", + "referencedDeclaration": 1258, + "src": "10484:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } } @@ -26007,24 +25931,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } ], - "id": 850, + "id": 846, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10504:7:0", + "src": "10476:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 852, + "id": 848, "isConstant": false, "isLValue": false, "isPure": false, @@ -26032,13 +25956,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10504:13:0", + "src": "10476:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 853, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, @@ -26046,7 +25970,7 @@ "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "10504:21:0", + "src": "10476:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26062,32 +25986,32 @@ ], "expression": { "argumentTypes": null, - "id": 848, + "id": 844, "name": "contributionAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 840, - "src": "10481:18:0", + "referencedDeclaration": 836, + "src": "10453:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 849, + "id": 845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "10481:22:0", + "referencedDeclaration": 1169, + "src": "10453:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 854, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, @@ -26095,27 +26019,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10481:45:0", + "src": "10453:45:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 855, + "id": 851, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 1187, - "src": "10481:49:0", + "referencedDeclaration": 1183, + "src": "10453:49:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 857, + "id": 853, "isConstant": false, "isLValue": false, "isPure": false, @@ -26123,14 +26047,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10481:64:0", + "src": "10453:64:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "10459:86:0" + "src": "10431:86:0" }, { "expression": { @@ -26138,12 +26062,12 @@ "arguments": [ { "argumentTypes": null, - "id": 862, + "id": 858, "name": "amountToRefund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "10578:14:0", + "referencedDeclaration": 843, + "src": "10550:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26159,18 +26083,18 @@ ], "expression": { "argumentTypes": null, - "id": 859, + "id": 855, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10555:13:0", + "referencedDeclaration": 805, + "src": "10527:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 861, + "id": 857, "isConstant": false, "isLValue": false, "isPure": false, @@ -26178,13 +26102,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "10555:22:0", + "src": "10527:22:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 863, + "id": 859, "isConstant": false, "isLValue": false, "isPure": false, @@ -26192,15 +26116,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10555:38:0", + "src": "10527:38:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 864, + "id": 860, "nodeType": "ExpressionStatement", - "src": "10555:38:0" + "src": "10527:38:0" }, { "eventCall": { @@ -26208,12 +26132,12 @@ "arguments": [ { "argumentTypes": null, - "id": 866, + "id": 862, "name": "refundAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "10618:13:0", + "referencedDeclaration": 805, + "src": "10590:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -26221,12 +26145,12 @@ }, { "argumentTypes": null, - "id": 867, + "id": 863, "name": "amountToRefund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 847, - "src": "10633:14:0", + "referencedDeclaration": 843, + "src": "10605:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26244,18 +26168,18 @@ "typeString": "uint256" } ], - "id": 865, + "id": 861, "name": "Withdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, - "src": "10608:9:0", + "src": "10580:9:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 868, + "id": 864, "isConstant": false, "isLValue": false, "isPure": false, @@ -26263,57 +26187,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "10608:40:0", + "src": "10580:40:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 869, + "id": 865, "nodeType": "EmitStatement", - "src": "10603:45:0" + "src": "10575:45:0" } ] }, "documentation": null, - "id": 871, + "id": 867, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 812, + "id": 808, "modifierName": { "argumentTypes": null, - "id": 811, + "id": 807, "name": "onlyFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "10116:10:0", + "referencedDeclaration": 1017, + "src": "10088:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "10116:10:0" + "src": "10088:10:0" } ], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 810, + "id": 806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 809, + "id": 805, "name": "refundAddress", "nodeType": "VariableDeclaration", - "scope": 871, - "src": "10086:21:0", + "scope": 867, + "src": "10058:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -26321,10 +26245,10 @@ "typeString": "address" }, "typeName": { - "id": 808, + "id": 804, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10086:7:0", + "src": "10058:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -26334,45 +26258,45 @@ "visibility": "internal" } ], - "src": "10085:23:0" + "src": "10057:23:0" }, "payable": false, "returnParameters": { - "id": 813, + "id": 809, "nodeType": "ParameterList", "parameters": [], - "src": "10127:0:0" + "src": "10099:0:0" }, - "scope": 1080, - "src": "10068:587:0", + "scope": 1076, + "src": "10040:587:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 912, + "id": 908, "nodeType": "Block", - "src": "10801:322:0", + "src": "10773:322:0", "statements": [ { "body": { - "id": 906, + "id": 902, "nodeType": "Block", - "src": "10861:221:0", + "src": "10833:221:0", "statements": [ { "assignments": [ - 890 + 886 ], "declarations": [ { "constant": false, - "id": 890, + "id": 886, "name": "contributorAddress", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "10875:26:0", + "scope": 909, + "src": "10847:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -26380,10 +26304,10 @@ "typeString": "address" }, "typeName": { - "id": 889, + "id": 885, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10875:7:0", + "src": "10847:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -26393,31 +26317,31 @@ "visibility": "internal" } ], - "id": 894, + "id": 890, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 891, + "id": 887, "name": "contributorList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, - "src": "10904:15:0", + "src": "10876:15:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 893, + "id": 889, "indexExpression": { "argumentTypes": null, - "id": 892, + "id": 888, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "10920:1:0", + "referencedDeclaration": 875, + "src": "10892:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26428,19 +26352,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10904:18:0", + "src": "10876:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "10875:47:0" + "src": "10847:47:0" }, { "condition": { "argumentTypes": null, - "id": 899, + "id": 895, "isConstant": false, "isLValue": false, "isPure": false, @@ -26448,33 +26372,33 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "10940:42:0", + "src": "10912:42:0", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 895, + "id": 891, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "10941:12:0", + "src": "10913:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 897, + "id": 893, "indexExpression": { "argumentTypes": null, - "id": 896, + "id": 892, "name": "contributorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 890, - "src": "10954:18:0", + "referencedDeclaration": 886, + "src": "10926:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -26485,13 +26409,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10941:32:0", + "src": "10913:32:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 898, + "id": 894, "isConstant": false, "isLValue": true, "isPure": false, @@ -26499,7 +26423,7 @@ "memberName": "refunded", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "10941:41:0", + "src": "10913:41:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -26511,13 +26435,13 @@ } }, "falseBody": null, - "id": 905, + "id": 901, "nodeType": "IfStatement", - "src": "10936:136:0", + "src": "10908:136:0", "trueBody": { - "id": 904, + "id": 900, "nodeType": "Block", - "src": "10984:88:0", + "src": "10956:88:0", "statements": [ { "expression": { @@ -26526,14 +26450,14 @@ { "argumentTypes": null, "hexValue": "4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f742079657420726566756e646564", - "id": 901, + "id": 897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11009:47:0", + "src": "10981:47:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_85d231c62370fa6b43ee7ffe2e2243eb8d4631e742e97de3a2558a277a825be1", @@ -26549,21 +26473,21 @@ "typeString": "literal_string \"At least one contributor has not yet refunded\"" } ], - "id": 900, + "id": 896, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 1252, - 1253 + 1248, + 1249 ], - "referencedDeclaration": 1253, - "src": "11002:6:0", + "referencedDeclaration": 1249, + "src": "10974:6:0", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 902, + "id": 898, "isConstant": false, "isLValue": false, "isPure": false, @@ -26571,15 +26495,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11002:55:0", + "src": "10974:55:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 903, + "id": 899, "nodeType": "ExpressionStatement", - "src": "11002:55:0" + "src": "10974:55:0" } ] } @@ -26592,19 +26516,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 885, + "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 882, + "id": 878, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "10828:1:0", + "referencedDeclaration": 875, + "src": "10800:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26616,18 +26540,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 883, + "id": 879, "name": "contributorList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 71, - "src": "10832:15:0", + "src": "10804:15:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 884, + "id": 880, "isConstant": false, "isLValue": true, "isPure": false, @@ -26635,31 +26559,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "10832:22:0", + "src": "10804:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10828:26:0", + "src": "10800:26:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 907, + "id": 903, "initializationExpression": { "assignments": [ - 879 + 875 ], "declarations": [ { "constant": false, - "id": 879, + "id": 875, "name": "i", "nodeType": "VariableDeclaration", - "scope": 913, - "src": "10816:6:0", + "scope": 909, + "src": "10788:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -26667,10 +26591,10 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 874, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "10816:4:0", + "src": "10788:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26680,18 +26604,18 @@ "visibility": "internal" } ], - "id": 881, + "id": 877, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 880, + "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10825:1:0", + "src": "10797:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -26700,12 +26624,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "10816:10:0" + "src": "10788:10:0" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 887, + "id": 883, "isConstant": false, "isLValue": false, "isPure": false, @@ -26713,15 +26637,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "10856:3:0", + "src": "10828:3:0", "subExpression": { "argumentTypes": null, - "id": 886, + "id": 882, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "10856:1:0", + "referencedDeclaration": 875, + "src": "10828:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26732,12 +26656,12 @@ "typeString": "uint256" } }, - "id": 888, + "id": 884, "nodeType": "ExpressionStatement", - "src": "10856:3:0" + "src": "10828:3:0" }, "nodeType": "ForStatement", - "src": "10811:271:0" + "src": "10783:271:0" }, { "expression": { @@ -26745,12 +26669,12 @@ "arguments": [ { "argumentTypes": null, - "id": 909, + "id": 905, "name": "beneficiary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, - "src": "11104:11:0", + "src": "11076:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -26764,18 +26688,18 @@ "typeString": "address" } ], - "id": 908, + "id": 904, "name": "selfdestruct", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1255, - "src": "11091:12:0", + "referencedDeclaration": 1251, + "src": "11063:12:0", "typeDescriptions": { "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 910, + "id": 906, "isConstant": false, "isLValue": false, "isPure": false, @@ -26783,89 +26707,89 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11091:25:0", + "src": "11063:25:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 911, + "id": 907, "nodeType": "ExpressionStatement", - "src": "11091:25:0" + "src": "11063:25:0" } ] }, "documentation": null, - "id": 913, + "id": 909, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 874, + "id": 870, "modifierName": { "argumentTypes": null, - "id": 873, + "id": 869, "name": "onlyTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1079, - "src": "10778:11:0", + "referencedDeclaration": 1075, + "src": "10750:11:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "10778:11:0" + "src": "10750:11:0" }, { "arguments": null, - "id": 876, + "id": 872, "modifierName": { "argumentTypes": null, - "id": 875, + "id": 871, "name": "onlyFrozen", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "10790:10:0", + "referencedDeclaration": 1017, + "src": "10762:10:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "10790:10:0" + "src": "10762:10:0" } ], "name": "destroy", "nodeType": "FunctionDefinition", "parameters": { - "id": 872, + "id": 868, "nodeType": "ParameterList", "parameters": [], - "src": "10768:2:0" + "src": "10740:2:0" }, "payable": false, "returnParameters": { - "id": 877, + "id": 873, "nodeType": "ParameterList", "parameters": [], - "src": "10801:0:0" + "src": "10773:0:0" }, - "scope": 1080, - "src": "10752:371:0", + "scope": 1076, + "src": "10724:371:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 927, + "id": 923, "nodeType": "Block", - "src": "11200:57:0", + "src": "11172:57:0", "statements": [ { "expression": { @@ -26874,7 +26798,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 925, + "id": 921, "isConstant": false, "isLValue": false, "isPure": false, @@ -26885,14 +26809,14 @@ { "argumentTypes": null, "hexValue": "32", - "id": 922, + "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11233:1:0", + "src": "11205:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -26910,32 +26834,32 @@ ], "expression": { "argumentTypes": null, - "id": 920, + "id": 916, "name": "valueVoting", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "11217:11:0", + "referencedDeclaration": 911, + "src": "11189:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 921, + "id": 917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "11217:15:0", + "referencedDeclaration": 1169, + "src": "11189:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 923, + "id": 919, "isConstant": false, "isLValue": false, "isPure": false, @@ -26943,7 +26867,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "11217:18:0", + "src": "11189:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26953,32 +26877,32 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 924, + "id": 920, "name": "amountRaised", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 56, - "src": "11238:12:0", + "src": "11210:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11217:33:0", + "src": "11189:33:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 919, - "id": 926, + "functionReturnParameters": 915, + "id": 922, "nodeType": "Return", - "src": "11210:40:0" + "src": "11182:40:0" } ] }, "documentation": null, - "id": 928, + "id": 924, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -26986,16 +26910,16 @@ "name": "isMajorityVoting", "nodeType": "FunctionDefinition", "parameters": { - "id": 916, + "id": 912, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 915, + "id": 911, "name": "valueVoting", "nodeType": "VariableDeclaration", - "scope": 928, - "src": "11155:16:0", + "scope": 924, + "src": "11127:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27003,10 +26927,10 @@ "typeString": "uint256" }, "typeName": { - "id": 914, + "id": 910, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11155:4:0", + "src": "11127:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27016,20 +26940,20 @@ "visibility": "internal" } ], - "src": "11154:18:0" + "src": "11126:18:0" }, "payable": false, "returnParameters": { - "id": 919, + "id": 915, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 918, + "id": 914, "name": "", "nodeType": "VariableDeclaration", - "scope": 928, - "src": "11194:4:0", + "scope": 924, + "src": "11166:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27037,10 +26961,10 @@ "typeString": "bool" }, "typeName": { - "id": 917, + "id": 913, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11194:4:0", + "src": "11166:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27050,25 +26974,25 @@ "visibility": "internal" } ], - "src": "11193:6:0" + "src": "11165:6:0" }, - "scope": 1080, - "src": "11129:128:0", + "scope": 1076, + "src": "11101:128:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 958, + "id": 954, "nodeType": "Block", - "src": "11317:180:0", + "src": "11289:180:0", "statements": [ { "body": { - "id": 954, + "id": 950, "nodeType": "Block", - "src": "11370:99:0", + "src": "11342:99:0", "statements": [ { "condition": { @@ -27077,7 +27001,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 949, + "id": 945, "isConstant": false, "isLValue": false, "isPure": false, @@ -27086,18 +27010,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 944, + "id": 940, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "11388:3:0", + "referencedDeclaration": 1243, + "src": "11360:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 945, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -27105,7 +27029,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "11388:10:0", + "src": "11360:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -27117,26 +27041,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 946, + "id": 942, "name": "trustees", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 74, - "src": "11402:8:0", + "src": "11374:8:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 948, + "id": 944, "indexExpression": { "argumentTypes": null, - "id": 947, + "id": 943, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, - "src": "11411:1:0", + "referencedDeclaration": 930, + "src": "11383:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27147,39 +27071,39 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11402:11:0", + "src": "11374:11:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "11388:25:0", + "src": "11360:25:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 953, + "id": 949, "nodeType": "IfStatement", - "src": "11384:75:0", + "src": "11356:75:0", "trueBody": { - "id": 952, + "id": 948, "nodeType": "Block", - "src": "11415:44:0", + "src": "11387:44:0", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 950, + "id": 946, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "11440:4:0", + "src": "11412:4:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -27187,10 +27111,10 @@ }, "value": "true" }, - "functionReturnParameters": 932, - "id": 951, + "functionReturnParameters": 928, + "id": 947, "nodeType": "Return", - "src": "11433:11:0" + "src": "11405:11:0" } ] } @@ -27203,19 +27127,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 940, + "id": 936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 937, + "id": 933, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, - "src": "11344:1:0", + "referencedDeclaration": 930, + "src": "11316:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27227,18 +27151,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 938, + "id": 934, "name": "trustees", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 74, - "src": "11348:8:0", + "src": "11320:8:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 939, + "id": 935, "isConstant": false, "isLValue": true, "isPure": false, @@ -27246,31 +27170,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "11348:15:0", + "src": "11320:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11344:19:0", + "src": "11316:19:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 955, + "id": 951, "initializationExpression": { "assignments": [ - 934 + 930 ], "declarations": [ { "constant": false, - "id": 934, + "id": 930, "name": "i", "nodeType": "VariableDeclaration", - "scope": 959, - "src": "11332:6:0", + "scope": 955, + "src": "11304:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27278,10 +27202,10 @@ "typeString": "uint256" }, "typeName": { - "id": 933, + "id": 929, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11332:4:0", + "src": "11304:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27291,18 +27215,18 @@ "visibility": "internal" } ], - "id": 936, + "id": 932, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 935, + "id": 931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11341:1:0", + "src": "11313:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -27311,12 +27235,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "11332:10:0" + "src": "11304:10:0" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 942, + "id": 938, "isConstant": false, "isLValue": false, "isPure": false, @@ -27324,15 +27248,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "11365:3:0", + "src": "11337:3:0", "subExpression": { "argumentTypes": null, - "id": 941, + "id": 937, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 934, - "src": "11365:1:0", + "referencedDeclaration": 930, + "src": "11337:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27343,25 +27267,25 @@ "typeString": "uint256" } }, - "id": 943, + "id": 939, "nodeType": "ExpressionStatement", - "src": "11365:3:0" + "src": "11337:3:0" }, "nodeType": "ForStatement", - "src": "11327:142:0" + "src": "11299:142:0" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 956, + "id": 952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "11485:5:0", + "src": "11457:5:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -27369,15 +27293,15 @@ }, "value": "false" }, - "functionReturnParameters": 932, - "id": 957, + "functionReturnParameters": 928, + "id": 953, "nodeType": "Return", - "src": "11478:12:0" + "src": "11450:12:0" } ] }, "documentation": null, - "id": 959, + "id": 955, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -27385,23 +27309,23 @@ "name": "isCallerTrustee", "nodeType": "FunctionDefinition", "parameters": { - "id": 929, + "id": 925, "nodeType": "ParameterList", "parameters": [], - "src": "11287:2:0" + "src": "11259:2:0" }, "payable": false, "returnParameters": { - "id": 932, + "id": 928, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 931, + "id": 927, "name": "", "nodeType": "VariableDeclaration", - "scope": 959, - "src": "11311:4:0", + "scope": 955, + "src": "11283:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27409,10 +27333,10 @@ "typeString": "bool" }, "typeName": { - "id": 930, + "id": 926, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11311:4:0", + "src": "11283:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27422,19 +27346,19 @@ "visibility": "internal" } ], - "src": "11310:6:0" + "src": "11282:6:0" }, - "scope": 1080, - "src": "11263:234:0", + "scope": 1076, + "src": "11235:234:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 971, + "id": 967, "nodeType": "Block", - "src": "11550:62:0", + "src": "11522:62:0", "statements": [ { "expression": { @@ -27443,7 +27367,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 969, + "id": 965, "isConstant": false, "isLValue": false, "isPure": false, @@ -27454,19 +27378,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 966, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 964, + "id": 960, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "11567:3:0", + "referencedDeclaration": 1245, + "src": "11539:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27476,18 +27400,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 965, + "id": 961, "name": "deadline", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, - "src": "11574:8:0", + "src": "11546:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "11567:15:0", + "src": "11539:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27497,7 +27421,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 968, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, @@ -27505,15 +27429,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "11586:19:0", + "src": "11558:19:0", "subExpression": { "argumentTypes": null, - "id": 967, + "id": 963, "name": "isRaiseGoalReached", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "11587:18:0", + "src": "11559:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27524,21 +27448,21 @@ "typeString": "bool" } }, - "src": "11567:38:0", + "src": "11539:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 963, - "id": 970, + "functionReturnParameters": 959, + "id": 966, "nodeType": "Return", - "src": "11560:45:0" + "src": "11532:45:0" } ] }, "documentation": null, - "id": 972, + "id": 968, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -27546,23 +27470,23 @@ "name": "isFailed", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 956, "nodeType": "ParameterList", "parameters": [], - "src": "11520:2:0" + "src": "11492:2:0" }, "payable": false, "returnParameters": { - "id": 963, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 962, + "id": 958, "name": "", "nodeType": "VariableDeclaration", - "scope": 972, - "src": "11544:4:0", + "scope": 968, + "src": "11516:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27570,10 +27494,10 @@ "typeString": "bool" }, "typeName": { - "id": 961, + "id": 957, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11544:4:0", + "src": "11516:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27583,19 +27507,19 @@ "visibility": "internal" } ], - "src": "11543:6:0" + "src": "11515:6:0" }, - "scope": 1080, - "src": "11503:109:0", + "scope": 1076, + "src": "11475:109:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 988, + "id": 984, "nodeType": "Block", - "src": "11731:90:0", + "src": "11703:90:0", "statements": [ { "expression": { @@ -27606,26 +27530,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 981, + "id": 977, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "11749:12:0", + "src": "11721:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 983, + "id": 979, "indexExpression": { "argumentTypes": null, - "id": 982, + "id": 978, "name": "contributorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 974, - "src": "11762:18:0", + "referencedDeclaration": 970, + "src": "11734:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -27636,13 +27560,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11749:32:0", + "src": "11721:32:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 984, + "id": 980, "isConstant": false, "isLValue": true, "isPure": false, @@ -27650,21 +27574,21 @@ "memberName": "milestoneNoVotes", "nodeType": "MemberAccess", "referencedDeclaration": 25, - "src": "11749:49:0", + "src": "11721:49:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage", "typeString": "bool[] storage ref" } }, - "id": 986, + "id": 982, "indexExpression": { "argumentTypes": null, - "id": 985, + "id": 981, "name": "milestoneIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 976, - "src": "11799:14:0", + "referencedDeclaration": 972, + "src": "11771:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27675,21 +27599,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11749:65:0", + "src": "11721:65:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 980, - "id": 987, + "functionReturnParameters": 976, + "id": 983, "nodeType": "Return", - "src": "11742:72:0" + "src": "11714:72:0" } ] }, "documentation": null, - "id": 989, + "id": 985, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -27697,16 +27621,16 @@ "name": "getContributorMilestoneVote", "nodeType": "FunctionDefinition", "parameters": { - "id": 977, + "id": 973, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 974, + "id": 970, "name": "contributorAddress", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "11655:26:0", + "scope": 985, + "src": "11627:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27714,10 +27638,10 @@ "typeString": "address" }, "typeName": { - "id": 973, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "11655:7:0", + "src": "11627:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -27728,11 +27652,11 @@ }, { "constant": false, - "id": 976, + "id": 972, "name": "milestoneIndex", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "11683:19:0", + "scope": 985, + "src": "11655:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27740,10 +27664,10 @@ "typeString": "uint256" }, "typeName": { - "id": 975, + "id": 971, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11683:4:0", + "src": "11655:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27753,20 +27677,20 @@ "visibility": "internal" } ], - "src": "11654:49:0" + "src": "11626:49:0" }, "payable": false, "returnParameters": { - "id": 980, + "id": 976, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 979, + "id": 975, "name": "", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "11725:4:0", + "scope": 985, + "src": "11697:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27774,10 +27698,10 @@ "typeString": "bool" }, "typeName": { - "id": 978, + "id": 974, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "11725:4:0", + "src": "11697:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27787,19 +27711,19 @@ "visibility": "internal" } ], - "src": "11724:6:0" + "src": "11696:6:0" }, - "scope": 1080, - "src": "11618:203:0", + "scope": 1076, + "src": "11590:203:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1001, + "id": 997, "nodeType": "Block", - "src": "11924:75:0", + "src": "11896:75:0", "statements": [ { "expression": { @@ -27808,26 +27732,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 996, + "id": 992, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "11941:12:0", + "src": "11913:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 998, + "id": 994, "indexExpression": { "argumentTypes": null, - "id": 997, + "id": 993, "name": "contributorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 991, - "src": "11954:18:0", + "referencedDeclaration": 987, + "src": "11926:18:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -27838,13 +27762,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "11941:32:0", + "src": "11913:32:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 999, + "id": 995, "isConstant": false, "isLValue": true, "isPure": false, @@ -27852,21 +27776,21 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "11941:51:0", + "src": "11913:51:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 995, - "id": 1000, + "functionReturnParameters": 991, + "id": 996, "nodeType": "Return", - "src": "11934:58:0" + "src": "11906:58:0" } ] }, "documentation": null, - "id": 1002, + "id": 998, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -27874,16 +27798,16 @@ "name": "getContributorContributionAmount", "nodeType": "FunctionDefinition", "parameters": { - "id": 992, + "id": 988, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 991, + "id": 987, "name": "contributorAddress", "nodeType": "VariableDeclaration", - "scope": 1002, - "src": "11869:26:0", + "scope": 998, + "src": "11841:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27891,10 +27815,10 @@ "typeString": "address" }, "typeName": { - "id": 990, + "id": 986, "name": "address", "nodeType": "ElementaryTypeName", - "src": "11869:7:0", + "src": "11841:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -27904,20 +27828,20 @@ "visibility": "internal" } ], - "src": "11868:28:0" + "src": "11840:28:0" }, "payable": false, "returnParameters": { - "id": 995, + "id": 991, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 994, + "id": 990, "name": "", "nodeType": "VariableDeclaration", - "scope": 1002, - "src": "11918:4:0", + "scope": 998, + "src": "11890:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -27925,10 +27849,10 @@ "typeString": "uint256" }, "typeName": { - "id": 993, + "id": 989, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "11918:4:0", + "src": "11890:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -27938,19 +27862,19 @@ "visibility": "internal" } ], - "src": "11917:6:0" + "src": "11889:6:0" }, - "scope": 1080, - "src": "11827:172:0", + "scope": 1076, + "src": "11799:172:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1011, + "id": 1007, "nodeType": "Block", - "src": "12059:42:0", + "src": "12031:42:0", "statements": [ { "expression": { @@ -27958,12 +27882,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1008, + "id": 1004, "name": "freezeReason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11, - "src": "12081:12:0", + "src": "12053:12:0", "typeDescriptions": { "typeIdentifier": "t_enum$_FreezeReason_$9", "typeString": "enum CrowdFund.FreezeReason" @@ -27977,20 +27901,20 @@ "typeString": "enum CrowdFund.FreezeReason" } ], - "id": 1007, + "id": 1003, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "12076:4:0", + "src": "12048:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint" }, - "id": 1009, + "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, @@ -27998,21 +27922,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12076:18:0", + "src": "12048:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1006, - "id": 1010, + "functionReturnParameters": 1002, + "id": 1006, "nodeType": "Return", - "src": "12069:25:0" + "src": "12041:25:0" } ] }, "documentation": null, - "id": 1012, + "id": 1008, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -28020,23 +27944,23 @@ "name": "getFreezeReason", "nodeType": "FunctionDefinition", "parameters": { - "id": 1003, + "id": 999, "nodeType": "ParameterList", "parameters": [], - "src": "12029:2:0" + "src": "12001:2:0" }, "payable": false, "returnParameters": { - "id": 1006, + "id": 1002, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1005, + "id": 1001, "name": "", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "12053:4:0", + "scope": 1008, + "src": "12025:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -28044,10 +27968,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1004, + "id": 1000, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "12053:4:0", + "src": "12025:4:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28057,19 +27981,19 @@ "visibility": "internal" } ], - "src": "12052:6:0" + "src": "12024:6:0" }, - "scope": 1080, - "src": "12005:96:0", + "scope": 1076, + "src": "11977:96:0", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1020, + "id": 1016, "nodeType": "Block", - "src": "12129:70:0", + "src": "12101:70:0", "statements": [ { "expression": { @@ -28077,12 +28001,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1015, + "id": 1011, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "12147:6:0", + "src": "12119:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28091,14 +28015,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e64206973206e6f742066726f7a656e", - "id": 1016, + "id": 1012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12155:25:0", + "src": "12127:25:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_144124cc12823f56a1037eeced499cee1638a07fba8aa0ce757da7cf592192bf", @@ -28118,21 +28042,21 @@ "typeString": "literal_string \"CrowdFund is not frozen\"" } ], - "id": 1014, + "id": 1010, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12139:7:0", + "referencedDeclaration": 1247, + "src": "12111:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1017, + "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, @@ -28140,41 +28064,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12139:42:0", + "src": "12111:42:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1018, + "id": 1014, "nodeType": "ExpressionStatement", - "src": "12139:42:0" + "src": "12111:42:0" }, { - "id": 1019, + "id": 1015, "nodeType": "PlaceholderStatement", - "src": "12191:1:0" + "src": "12163:1:0" } ] }, "documentation": null, - "id": 1021, + "id": 1017, "name": "onlyFrozen", "nodeType": "ModifierDefinition", "parameters": { - "id": 1013, + "id": 1009, "nodeType": "ParameterList", "parameters": [], - "src": "12126:2:0" + "src": "12098:2:0" }, - "src": "12107:92:0", + "src": "12079:92:0", "visibility": "internal" }, { "body": { - "id": 1030, + "id": 1026, "nodeType": "Block", - "src": "12229:67:0", + "src": "12201:67:0", "statements": [ { "expression": { @@ -28182,7 +28106,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1025, + "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, @@ -28190,15 +28114,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "12247:7:0", + "src": "12219:7:0", "subExpression": { "argumentTypes": null, - "id": 1024, + "id": 1020, "name": "frozen", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "12248:6:0", + "src": "12220:6:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28212,14 +28136,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e642069732066726f7a656e", - "id": 1026, + "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12256:21:0", + "src": "12228:21:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21ebfed987d130de5e469bef5346c6c759f8769c3909e5f178aa85e98366503d", @@ -28239,21 +28163,21 @@ "typeString": "literal_string \"CrowdFund is frozen\"" } ], - "id": 1023, + "id": 1019, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12239:7:0", + "referencedDeclaration": 1247, + "src": "12211:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1027, + "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, @@ -28261,41 +28185,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12239:39:0", + "src": "12211:39:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1028, + "id": 1024, "nodeType": "ExpressionStatement", - "src": "12239:39:0" + "src": "12211:39:0" }, { - "id": 1029, + "id": 1025, "nodeType": "PlaceholderStatement", - "src": "12288:1:0" + "src": "12260:1:0" } ] }, "documentation": null, - "id": 1031, + "id": 1027, "name": "onlyUnfrozen", "nodeType": "ModifierDefinition", "parameters": { - "id": 1022, + "id": 1018, "nodeType": "ParameterList", "parameters": [], - "src": "12226:2:0" + "src": "12198:2:0" }, - "src": "12205:91:0", + "src": "12177:91:0", "visibility": "internal" }, { "body": { - "id": 1039, + "id": 1035, "nodeType": "Block", - "src": "12324:84:0", + "src": "12296:84:0", "statements": [ { "expression": { @@ -28303,12 +28227,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1034, + "id": 1030, "name": "isRaiseGoalReached", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "12342:18:0", + "src": "12314:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28317,14 +28241,14 @@ { "argumentTypes": null, "hexValue": "526169736520676f616c206973206e6f742072656163686564", - "id": 1035, + "id": 1031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12362:27:0", + "src": "12334:27:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d65d4721f73624ca6e381e7ad4c000f40a20c0abe88c0be62360bb906d10ffbe", @@ -28344,21 +28268,21 @@ "typeString": "literal_string \"Raise goal is not reached\"" } ], - "id": 1033, + "id": 1029, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12334:7:0", + "referencedDeclaration": 1247, + "src": "12306:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1036, + "id": 1032, "isConstant": false, "isLValue": false, "isPure": false, @@ -28366,41 +28290,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12334:56:0", + "src": "12306:56:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1037, + "id": 1033, "nodeType": "ExpressionStatement", - "src": "12334:56:0" + "src": "12306:56:0" }, { - "id": 1038, + "id": 1034, "nodeType": "PlaceholderStatement", - "src": "12400:1:0" + "src": "12372:1:0" } ] }, "documentation": null, - "id": 1040, + "id": 1036, "name": "onlyRaised", "nodeType": "ModifierDefinition", "parameters": { - "id": 1032, + "id": 1028, "nodeType": "ParameterList", "parameters": [], - "src": "12321:2:0" + "src": "12293:2:0" }, - "src": "12302:106:0", + "src": "12274:106:0", "visibility": "internal" }, { "body": { - "id": 1053, + "id": 1049, "nodeType": "Block", - "src": "12437:103:0", + "src": "12409:103:0", "statements": [ { "expression": { @@ -28412,7 +28336,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1048, + "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, @@ -28423,19 +28347,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1045, + "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1043, + "id": 1039, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "12455:3:0", + "referencedDeclaration": 1245, + "src": "12427:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28445,18 +28369,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1044, + "id": 1040, "name": "deadline", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 52, - "src": "12462:8:0", + "src": "12434:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "12455:15:0", + "src": "12427:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28466,7 +28390,7 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 1047, + "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, @@ -28474,15 +28398,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "12474:19:0", + "src": "12446:19:0", "subExpression": { "argumentTypes": null, - "id": 1046, + "id": 1042, "name": "isRaiseGoalReached", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46, - "src": "12475:18:0", + "src": "12447:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28493,7 +28417,7 @@ "typeString": "bool" } }, - "src": "12455:38:0", + "src": "12427:38:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28502,14 +28426,14 @@ { "argumentTypes": null, "hexValue": "43726f776446756e64206973206e6f74206f6e676f696e67", - "id": 1049, + "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12495:26:0", + "src": "12467:26:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_843cc2d7a1ba19041b40561b89d21c7571d29e5c5e2d0d1510f441aea3fc1747", @@ -28529,21 +28453,21 @@ "typeString": "literal_string \"CrowdFund is not ongoing\"" } ], - "id": 1042, + "id": 1038, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12447:7:0", + "referencedDeclaration": 1247, + "src": "12419:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1050, + "id": 1046, "isConstant": false, "isLValue": false, "isPure": false, @@ -28551,41 +28475,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12447:75:0", + "src": "12419:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1051, + "id": 1047, "nodeType": "ExpressionStatement", - "src": "12447:75:0" + "src": "12419:75:0" }, { - "id": 1052, + "id": 1048, "nodeType": "PlaceholderStatement", - "src": "12532:1:0" + "src": "12504:1:0" } ] }, "documentation": null, - "id": 1054, + "id": 1050, "name": "onlyOnGoing", "nodeType": "ModifierDefinition", "parameters": { - "id": 1041, + "id": 1037, "nodeType": "ParameterList", "parameters": [], - "src": "12434:2:0" + "src": "12406:2:0" }, - "src": "12414:126:0", + "src": "12386:126:0", "visibility": "internal" }, { "body": { - "id": 1068, + "id": 1064, "nodeType": "Block", - "src": "12573:116:0", + "src": "12545:116:0", "statements": [ { "expression": { @@ -28597,7 +28521,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1063, + "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, @@ -28608,34 +28532,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1057, + "id": 1053, "name": "contributors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, - "src": "12591:12:0", + "src": "12563:12:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Contributor_$30_storage_$", "typeString": "mapping(address => struct CrowdFund.Contributor storage ref)" } }, - "id": 1060, + "id": 1056, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1058, + "id": 1054, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1247, - "src": "12604:3:0", + "referencedDeclaration": 1243, + "src": "12576:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1059, + "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, @@ -28643,7 +28567,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "12604:10:0", + "src": "12576:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -28654,13 +28578,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "12591:24:0", + "src": "12563:24:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Contributor_$30_storage", "typeString": "struct CrowdFund.Contributor storage ref" } }, - "id": 1061, + "id": 1057, "isConstant": false, "isLValue": true, "isPure": false, @@ -28668,7 +28592,7 @@ "memberName": "contributionAmount", "nodeType": "MemberAccess", "referencedDeclaration": 22, - "src": "12591:43:0", + "src": "12563:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -28679,14 +28603,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1062, + "id": 1058, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12638:1:0", + "src": "12610:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -28694,7 +28618,7 @@ }, "value": "0" }, - "src": "12591:48:0", + "src": "12563:48:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28703,14 +28627,14 @@ { "argumentTypes": null, "hexValue": "43616c6c6572206973206e6f74206120636f6e7472696275746f72", - "id": 1064, + "id": 1060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12641:29:0", + "src": "12613:29:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27c7012fc5b199883f3d6c1e7d0d3c9cd967752b2ed8ba1703713f2d84425e7b", @@ -28730,21 +28654,21 @@ "typeString": "literal_string \"Caller is not a contributor\"" } ], - "id": 1056, + "id": 1052, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12583:7:0", + "referencedDeclaration": 1247, + "src": "12555:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1065, + "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, @@ -28752,41 +28676,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12583:88:0", + "src": "12555:88:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1066, + "id": 1062, "nodeType": "ExpressionStatement", - "src": "12583:88:0" + "src": "12555:88:0" }, { - "id": 1067, + "id": 1063, "nodeType": "PlaceholderStatement", - "src": "12681:1:0" + "src": "12653:1:0" } ] }, "documentation": null, - "id": 1069, + "id": 1065, "name": "onlyContributor", "nodeType": "ModifierDefinition", "parameters": { - "id": 1055, + "id": 1051, "nodeType": "ParameterList", "parameters": [], - "src": "12570:2:0" + "src": "12542:2:0" }, - "src": "12546:143:0", + "src": "12518:143:0", "visibility": "internal" }, { "body": { - "id": 1078, + "id": 1074, "nodeType": "Block", - "src": "12718:81:0", + "src": "12690:81:0", "statements": [ { "expression": { @@ -28797,18 +28721,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1072, + "id": 1068, "name": "isCallerTrustee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "12736:15:0", + "referencedDeclaration": 955, + "src": "12708:15:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 1073, + "id": 1069, "isConstant": false, "isLValue": false, "isPure": false, @@ -28816,7 +28740,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12736:17:0", + "src": "12708:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -28825,14 +28749,14 @@ { "argumentTypes": null, "hexValue": "43616c6c6572206973206e6f7420612074727573746565", - "id": 1074, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12755:25:0", + "src": "12727:25:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_efecdf3be8b72bfbf67a07f441dfdb20b968592ad6d7fba48a91dfa72a34f2d8", @@ -28852,21 +28776,21 @@ "typeString": "literal_string \"Caller is not a trustee\"" } ], - "id": 1071, + "id": 1067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1250, - 1251 + 1246, + 1247 ], - "referencedDeclaration": 1251, - "src": "12728:7:0", + "referencedDeclaration": 1247, + "src": "12700:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1075, + "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, @@ -28874,42 +28798,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "12728:53:0", + "src": "12700:53:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1076, + "id": 1072, "nodeType": "ExpressionStatement", - "src": "12728:53:0" + "src": "12700:53:0" }, { - "id": 1077, + "id": 1073, "nodeType": "PlaceholderStatement", - "src": "12791:1:0" + "src": "12763:1:0" } ] }, "documentation": null, - "id": 1079, + "id": 1075, "name": "onlyTrustee", "nodeType": "ModifierDefinition", "parameters": { - "id": 1070, + "id": 1066, "nodeType": "ParameterList", "parameters": [], - "src": "12715:2:0" + "src": "12687:2:0" }, - "src": "12695:104:0", + "src": "12667:104:0", "visibility": "internal" } ], - "scope": 1081, - "src": "87:12715:0" + "scope": 1077, + "src": "87:12687:0" } ], - "src": "0:12802:0" + "src": "0:12775:0" }, "compiler": { "name": "solc", @@ -28917,5 +28841,5 @@ }, "networks": {}, "schemaVersion": "2.0.1", - "updatedAt": "2018-09-26T03:49:30.936Z" + "updatedAt": "2018-11-16T20:36:37.827Z" } \ No newline at end of file diff --git a/contract/build/contracts/CrowdFundFactory.json b/contract/build/contracts/CrowdFundFactory.json index b42770e5..df48b963 100644 --- a/contract/build/contracts/CrowdFundFactory.json +++ b/contract/build/contracts/CrowdFundFactory.json @@ -57,24 +57,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50613692806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806350f74ec014610046575b600080fd5b34801561005257600080fd5b5061013760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919080359060200190929190803515159060200190929190505050610179565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808888888888888861018b610368565b808881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184151515158152602001838103835288818151815260200191508051906020019060200280838360005b8381101561021d578082015181840152602081019050610202565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561025f578082015181840152602081019050610244565b505050509050019950505050505050505050604051809103906000f08015801561028d573d6000803e3d6000fd5b5090507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080915050979650505050505050565b6040516132ee8061037983390190560060806040523480156200001157600080fd5b50604051620032ee380380620032ee833981018060405281019080805190602001909291908051906020019092919080518201929190602001805182019291906020018051906020019092919080519060200190929190805190602001909291905050506000806000670de0b6b3a76400008a1015151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526169736520676f616c20697320736d616c6c6572207468616e20312065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001885110158015620001365750600a885111155b1515620001d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5472757374656520616464726573736573206d757374206265206174206c656181526020017f7374203120616e64206e6f74206d6f7265207468616e2031300000000000000081525060400191505060405180910390fd5b6001875110158015620001e65750600a875111155b151562000281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d696c6573746f6e6573206d757374206265206174206c65617374203120616e81526020017f64206e6f74206d6f7265207468616e203130000000000000000000000000000081525060400191505060405180910390fd5b60009250600091505b865182101562000416578682815181101515620002a357fe5b9060200190602002015190506000811115156200034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f4d696c6573746f6e6520616d6f756e74206d757374206265206772656174657281526020017f207468616e20300000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6200037181846200059b6401000000000262002ae5179091906401000000009004565b9250600c6080604051908101604052808381526020016000815260200160008152602001600015158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050505081806001019250506200028a565b8983141515620004b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d696c6573746f6e6520746f74616c206d75737420657175616c20726169736581526020017f20676f616c00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60016006819055508960038190555088600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b90805190602001906200051c929190620005b8565b508542016002819055508460018190555083600060036101000a81548160ff02191690831515021790555060008060026101000a81548160ff021916908315150217905550600060078190555060008060016101000a81548160ff0219169083151502179055506000600481905550505050505050505050506200068d565b60008183019050828110151515620005af57fe5b80905092915050565b82805482825590600052602060002090810192821562000634579160200282015b82811115620006335782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005d9565b5b50905062000643919062000647565b5090565b6200068a91905b808211156200068657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200064e565b5090565b90565b612c51806200069d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e6f565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e9b565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebc565b005b34801561041557600080fd5b5061041e611231565b005b34801561042c57600080fd5b5061044d600480360381019080803515159060200190929190505050611445565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061182a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611868565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118b4565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ba565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3d565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611bb6565b005b3480156105f357600080fd5b506105fc61206b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612071565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061244a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c1612488565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec61248e565b6040518082815260200191505060405180910390f35b61070a6124af565b005b34801561071857600080fd5b50610721612a34565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a47565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a5a565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612aa6565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612acc90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e67565b8415610e6657610e41600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e2157fe5b906000526020600020906004020160010154612ae590919063ffffffff16565b600c87815481101515610e5057fe5b9060005260206000209060040201600101819055505b5b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610eb4600284612b0190919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491506111946005546111863073ffffffffffffffffffffffffffffffffffffffff163185612b0190919063ffffffff16565b612b3990919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111dc573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112c2610850565b92506112cc612aa6565b91506112d9600754610e9b565b905082806112e45750815b806112ec5750805b1515611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113b45760008060006101000a81548160ff021916908360028111156113aa57fe5b0217905550611407565b81156113e25760016000806101000a81548160ff021916908360028111156113d857fe5b0217905550611406565b60026000806101000a81548160ff0219169083600281111561140057fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515611501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615151561160a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117c1576117b6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612acc90919063ffffffff16565b600781905550611826565b81156118255761181e600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ae590919063ffffffff16565b6007819055505b5b5050565b600b8181548110151561183957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118c5610850565b1515611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611b0257600a828154811015156119de57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119c2565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8e57fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bc6610850565b1515611c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d5257fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d8357fe5b906000526020600020906004020160020154119350611dc1600c87815481101515611daa57fe5b906000526020600020906004020160010154610e9b565b925084151515611e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611eb257600c81815481101515611e7d57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611ea5578091505b8080600101915050611e61565b6001820186141515611f52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f6357fe5b906000526020600020906004020160020154141561200657600086148015611f975750600060039054906101000a900460ff165b15611fc7576001600c87815481101515611fad57fe5b906000526020600020906004020160020181905550612001565b611fdc60015442612ae590919063ffffffff16565b600c87815481101515611feb57fe5b9060005260206000209060040201600201819055505b612063565b8380156120105750825b156120625761203d61202e6002600154612b0190919063ffffffff16565b42612ae590919063ffffffff16565b600c8781548110151561204c57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561219057fe5b9060005260206000209060040201600201541093506121ce600c868154811015156121b757fe5b906000526020600020906004020160010154610e9b565b9250600c858154811015156121df57fe5b906000526020600020906004020160030160009054906101000a900460ff16915083801561220b575082155b8015612215575081155b156123af576001600c8681548110151561222b57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561226257fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122de573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161236986600c80549050612acc90919063ffffffff16565b14156123aa57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612443565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561245957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff1660028111156124aa57fe5b905090565b600080600060025442111580156124d35750600060029054906101000a900460ff16155b1515612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125e134600454612ae590919063ffffffff16565b92506003548311151515612683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061269b5750805b151561275b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561291657608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127ec5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612867929190612b4f565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129b2565b61296b34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ae590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129e1576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a6957fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ac75750600060029054906101000a900460ff16155b905090565b6000828211151515612ada57fe5b818303905092915050565b60008183019050828110151515612af857fe5b80905092915050565b600080831415612b145760009050612b33565b8183029050818382811515612b2557fe5b04141515612b2f57fe5b8090505b92915050565b60008183811515612b4657fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612be45791602002820160005b83821115612bb557835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b78565b8015612be25782816101000a81549060ff0219169055600101602081600001049283019260010302612bb5565b505b509050612bf19190612bf5565b5090565b612c2291905b80821115612c1e57600081816101000a81549060ff021916905550600101612bfb565b5090565b905600a165627a7a72305820b725d6ed533ba3c21fcb343e8c393171f8c562c1668224983554c10c88ce87060029a165627a7a7230582038c1809b6ce57218a64a17a9211e1b79cca7e3c5a544e99070a9b555c6cb52430029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806350f74ec014610046575b600080fd5b34801561005257600080fd5b5061013760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919080359060200190929190803515159060200190929190505050610179565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808888888888888861018b610368565b808881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184151515158152602001838103835288818151815260200191508051906020019060200280838360005b8381101561021d578082015181840152602081019050610202565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561025f578082015181840152602081019050610244565b505050509050019950505050505050505050604051809103906000f08015801561028d573d6000803e3d6000fd5b5090507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080915050979650505050505050565b6040516132ee8061037983390190560060806040523480156200001157600080fd5b50604051620032ee380380620032ee833981018060405281019080805190602001909291908051906020019092919080518201929190602001805182019291906020018051906020019092919080519060200190929190805190602001909291905050506000806000670de0b6b3a76400008a1015151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526169736520676f616c20697320736d616c6c6572207468616e20312065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001885110158015620001365750600a885111155b1515620001d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5472757374656520616464726573736573206d757374206265206174206c656181526020017f7374203120616e64206e6f74206d6f7265207468616e2031300000000000000081525060400191505060405180910390fd5b6001875110158015620001e65750600a875111155b151562000281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d696c6573746f6e6573206d757374206265206174206c65617374203120616e81526020017f64206e6f74206d6f7265207468616e203130000000000000000000000000000081525060400191505060405180910390fd5b60009250600091505b865182101562000416578682815181101515620002a357fe5b9060200190602002015190506000811115156200034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f4d696c6573746f6e6520616d6f756e74206d757374206265206772656174657281526020017f207468616e20300000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6200037181846200059b6401000000000262002ae5179091906401000000009004565b9250600c6080604051908101604052808381526020016000815260200160008152602001600015158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050505081806001019250506200028a565b8983141515620004b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d696c6573746f6e6520746f74616c206d75737420657175616c20726169736581526020017f20676f616c00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60016006819055508960038190555088600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b90805190602001906200051c929190620005b8565b508542016002819055508460018190555083600060036101000a81548160ff02191690831515021790555060008060026101000a81548160ff021916908315150217905550600060078190555060008060016101000a81548160ff0219169083151502179055506000600481905550505050505050505050506200068d565b60008183019050828110151515620005af57fe5b80905092915050565b82805482825590600052602060002090810192821562000634579160200282015b82811115620006335782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005d9565b5b50905062000643919062000647565b5090565b6200068a91905b808211156200068657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200064e565b5090565b90565b612c51806200069d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e6f565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e9b565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebc565b005b34801561041557600080fd5b5061041e611231565b005b34801561042c57600080fd5b5061044d600480360381019080803515159060200190929190505050611445565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061182a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611868565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118b4565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ba565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3d565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611bb6565b005b3480156105f357600080fd5b506105fc61206b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612071565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061244a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c1612488565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec61248e565b6040518082815260200191505060405180910390f35b61070a6124af565b005b34801561071857600080fd5b50610721612a34565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a47565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a5a565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612aa6565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612acc90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e67565b8415610e6657610e41600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e2157fe5b906000526020600020906004020160010154612ae590919063ffffffff16565b600c87815481101515610e5057fe5b9060005260206000209060040201600101819055505b5b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610eb4600284612b0190919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491506111946005546111863073ffffffffffffffffffffffffffffffffffffffff163185612b0190919063ffffffff16565b612b3990919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111dc573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112c2610850565b92506112cc612aa6565b91506112d9600754610e9b565b905082806112e45750815b806112ec5750805b1515611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113b45760008060006101000a81548160ff021916908360028111156113aa57fe5b0217905550611407565b81156113e25760016000806101000a81548160ff021916908360028111156113d857fe5b0217905550611406565b60026000806101000a81548160ff0219169083600281111561140057fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515611501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615151561160a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117c1576117b6600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612acc90919063ffffffff16565b600781905550611826565b81156118255761181e600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ae590919063ffffffff16565b6007819055505b5b5050565b600b8181548110151561183957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118c5610850565b1515611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611b0257600a828154811015156119de57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119c2565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8e57fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bc6610850565b1515611c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d5257fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d8357fe5b906000526020600020906004020160020154119350611dc1600c87815481101515611daa57fe5b906000526020600020906004020160010154610e9b565b925084151515611e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611eb257600c81815481101515611e7d57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611ea5578091505b8080600101915050611e61565b6001820186141515611f52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f6357fe5b906000526020600020906004020160020154141561200657600086148015611f975750600060039054906101000a900460ff165b15611fc7576001600c87815481101515611fad57fe5b906000526020600020906004020160020181905550612001565b611fdc60015442612ae590919063ffffffff16565b600c87815481101515611feb57fe5b9060005260206000209060040201600201819055505b612063565b8380156120105750825b156120625761203d61202e6002600154612b0190919063ffffffff16565b42612ae590919063ffffffff16565b600c8781548110151561204c57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561219057fe5b9060005260206000209060040201600201541093506121ce600c868154811015156121b757fe5b906000526020600020906004020160010154610e9b565b9250600c858154811015156121df57fe5b906000526020600020906004020160030160009054906101000a900460ff16915083801561220b575082155b8015612215575081155b156123af576001600c8681548110151561222b57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561226257fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122de573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161236986600c80549050612acc90919063ffffffff16565b14156123aa57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612443565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561245957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff1660028111156124aa57fe5b905090565b600080600060025442111580156124d35750600060029054906101000a900460ff16155b1515612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125e134600454612ae590919063ffffffff16565b92506003548311151515612683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061269b5750805b151561275b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561291657608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127ec5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612867929190612b4f565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129b2565b61296b34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ae590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129e1576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a6957fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ac75750600060029054906101000a900460ff16155b905090565b6000828211151515612ada57fe5b818303905092915050565b60008183019050828110151515612af857fe5b80905092915050565b600080831415612b145760009050612b33565b8183029050818382811515612b2557fe5b04141515612b2f57fe5b8090505b92915050565b60008183811515612b4657fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612be45791602002820160005b83821115612bb557835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b78565b8015612be25782816101000a81549060ff0219169055600101602081600001049283019260010302612bb5565b505b509050612bf19190612bf5565b5090565b612c2291905b80821115612c1e57600081816101000a81549060ff021916905550600101612bfb565b5090565b905600a165627a7a72305820b725d6ed533ba3c21fcb343e8c393171f8c562c1668224983554c10c88ce87060029a165627a7a7230582038c1809b6ce57218a64a17a9211e1b79cca7e3c5a544e99070a9b555c6cb52430029", + "bytecode": "0x608060405234801561001057600080fd5b50613684806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806350f74ec014610046575b600080fd5b34801561005257600080fd5b5061013760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919080359060200190929190803515159060200190929190505050610179565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808888888888888861018b610368565b808881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184151515158152602001838103835288818151815260200191508051906020019060200280838360005b8381101561021d578082015181840152602081019050610202565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561025f578082015181840152602081019050610244565b505050509050019950505050505050505050604051809103906000f08015801561028d573d6000803e3d6000fd5b5090507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080915050979650505050505050565b6040516132e08061037983390190560060806040523480156200001157600080fd5b50604051620032e0380380620032e0833981018060405281019080805190602001909291908051906020019092919080518201929190602001805182019291906020018051906020019092919080519060200190929190805190602001909291905050506000806000670de0b6b3a76400008a1015151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526169736520676f616c20697320736d616c6c6572207468616e20312065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001885110158015620001365750600a885111155b1515620001d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5472757374656520616464726573736573206d757374206265206174206c656181526020017f7374203120616e64206e6f74206d6f7265207468616e2031300000000000000081525060400191505060405180910390fd5b6001875110158015620001e65750600a875111155b151562000281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d696c6573746f6e6573206d757374206265206174206c65617374203120616e81526020017f64206e6f74206d6f7265207468616e203130000000000000000000000000000081525060400191505060405180910390fd5b60009250600091505b865182101562000416578682815181101515620002a357fe5b9060200190602002015190506000811115156200034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f4d696c6573746f6e6520616d6f756e74206d757374206265206772656174657281526020017f207468616e20300000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6200037181846200059b6401000000000262002ad7179091906401000000009004565b9250600c6080604051908101604052808381526020016000815260200160008152602001600015158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050505081806001019250506200028a565b8983141515620004b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d696c6573746f6e6520746f74616c206d75737420657175616c20726169736581526020017f20676f616c00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60016006819055508960038190555088600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b90805190602001906200051c929190620005b8565b508542016002819055508460018190555083600060036101000a81548160ff02191690831515021790555060008060026101000a81548160ff021916908315150217905550600060078190555060008060016101000a81548160ff0219169083151502179055506000600481905550505050505050505050506200068d565b60008183019050828110151515620005af57fe5b80905092915050565b82805482825590600052602060002090810192821562000634579160200282015b82811115620006335782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005d9565b5b50905062000643919062000647565b5090565b6200068a91905b808211156200068657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200064e565b5090565b90565b612c43806200069d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e68565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e94565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb5565b005b34801561041557600080fd5b5061041e61122a565b005b34801561042c57600080fd5b5061044d60048036038101908080351515906020019092919050505061143e565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061181c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185a565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118a6565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ac565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b2f565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611ba8565b005b3480156105f357600080fd5b506105fc61205d565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612063565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061243c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c161247a565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec612480565b6040518082815260200191505060405180910390f35b61070a6124a1565b005b34801561071857600080fd5b50610721612a26565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a39565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a4c565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612a98565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612abe90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e60565b610e3b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e1b57fe5b906000526020600020906004020160010154612ad790919063ffffffff16565b600c87815481101515610e4a57fe5b9060005260206000209060040201600101819055505b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610ead600284612af390919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154915061118d60055461117f3073ffffffffffffffffffffffffffffffffffffffff163185612af390919063ffffffff16565b612b2b90919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111d5573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112bb610850565b92506112c5612a98565b91506112d2600754610e94565b905082806112dd5750815b806112e55750805b151561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113ad5760008060006101000a81548160ff021916908360028111156113a357fe5b0217905550611400565b81156113db5760016000806101000a81548160ff021916908360028111156113d157fe5b02179055506113ff565b60026000806101000a81548160ff021916908360028111156113f957fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff16151561157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117ba576117af600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612abe90919063ffffffff16565b600781905550611818565b611811600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ad790919063ffffffff16565b6007819055505b5050565b600b8181548110151561182b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118b7610850565b151561192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611af457600a828154811015156119d057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119b4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8057fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bb8610850565b1515611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d4457fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d7557fe5b906000526020600020906004020160020154119350611db3600c87815481101515611d9c57fe5b906000526020600020906004020160010154610e94565b925084151515611e2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611ea457600c81815481101515611e6f57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611e97578091505b8080600101915050611e53565b6001820186141515611f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f5557fe5b9060005260206000209060040201600201541415611ff857600086148015611f895750600060039054906101000a900460ff165b15611fb9576001600c87815481101515611f9f57fe5b906000526020600020906004020160020181905550611ff3565b611fce60015442612ad790919063ffffffff16565b600c87815481101515611fdd57fe5b9060005260206000209060040201600201819055505b612055565b8380156120025750825b156120545761202f6120206002600154612af390919063ffffffff16565b42612ad790919063ffffffff16565b600c8781548110151561203e57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561218257fe5b9060005260206000209060040201600201541093506121c0600c868154811015156121a957fe5b906000526020600020906004020160010154610e94565b9250600c858154811015156121d157fe5b906000526020600020906004020160030160009054906101000a900460ff1691508380156121fd575082155b8015612207575081155b156123a1576001600c8681548110151561221d57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561225457fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122d0573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161235b86600c80549050612abe90919063ffffffff16565b141561239c57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612435565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561244b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff16600281111561249c57fe5b905090565b600080600060025442111580156124c55750600060029054906101000a900460ff16155b1515612539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125d334600454612ad790919063ffffffff16565b92506003548311151515612675576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061268d5750805b151561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561290857608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127de5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612859929190612b41565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129a4565b61295d34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ad790919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129d3576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a5b57fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ab95750600060029054906101000a900460ff16155b905090565b6000828211151515612acc57fe5b818303905092915050565b60008183019050828110151515612aea57fe5b80905092915050565b600080831415612b065760009050612b25565b8183029050818382811515612b1757fe5b04141515612b2157fe5b8090505b92915050565b60008183811515612b3857fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612bd65791602002820160005b83821115612ba757835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b6a565b8015612bd45782816101000a81549060ff0219169055600101602081600001049283019260010302612ba7565b505b509050612be39190612be7565b5090565b612c1491905b80821115612c1057600081816101000a81549060ff021916905550600101612bed565b5090565b905600a165627a7a7230582051351396444f74bc4a8b3921cf045e1b2aea376db653835bbe15cc04725c9b3d0029a165627a7a72305820934808680be9c81f1fba40415b4ca3b9b11aaa579220c370ce09f0bdcdd30d220029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806350f74ec014610046575b600080fd5b34801561005257600080fd5b5061013760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919080359060200190929190803515159060200190929190505050610179565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808888888888888861018b610368565b808881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184151515158152602001838103835288818151815260200191508051906020019060200280838360005b8381101561021d578082015181840152602081019050610202565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561025f578082015181840152602081019050610244565b505050509050019950505050505050505050604051809103906000f08015801561028d573d6000803e3d6000fd5b5090507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080915050979650505050505050565b6040516132e08061037983390190560060806040523480156200001157600080fd5b50604051620032e0380380620032e0833981018060405281019080805190602001909291908051906020019092919080518201929190602001805182019291906020018051906020019092919080519060200190929190805190602001909291905050506000806000670de0b6b3a76400008a1015151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526169736520676f616c20697320736d616c6c6572207468616e20312065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001885110158015620001365750600a885111155b1515620001d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5472757374656520616464726573736573206d757374206265206174206c656181526020017f7374203120616e64206e6f74206d6f7265207468616e2031300000000000000081525060400191505060405180910390fd5b6001875110158015620001e65750600a875111155b151562000281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d696c6573746f6e6573206d757374206265206174206c65617374203120616e81526020017f64206e6f74206d6f7265207468616e203130000000000000000000000000000081525060400191505060405180910390fd5b60009250600091505b865182101562000416578682815181101515620002a357fe5b9060200190602002015190506000811115156200034e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f4d696c6573746f6e6520616d6f756e74206d757374206265206772656174657281526020017f207468616e20300000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6200037181846200059b6401000000000262002ad7179091906401000000009004565b9250600c6080604051908101604052808381526020016000815260200160008152602001600015158152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050505081806001019250506200028a565b8983141515620004b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d696c6573746f6e6520746f74616c206d75737420657175616c20726169736581526020017f20676f616c00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60016006819055508960038190555088600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b90805190602001906200051c929190620005b8565b508542016002819055508460018190555083600060036101000a81548160ff02191690831515021790555060008060026101000a81548160ff021916908315150217905550600060078190555060008060016101000a81548160ff0219169083151502179055506000600481905550505050505050505050506200068d565b60008183019050828110151515620005af57fe5b80905092915050565b82805482825590600052602060002090810192821562000634579160200282015b82811115620006335782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005d9565b5b50905062000643919062000647565b5090565b6200068a91905b808211156200068657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200064e565b5090565b90565b612c43806200069d6000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063054f7d9c1461017a57806318329822146101a95780631f6d4942146101d45780631fe4d9dd1461024157806326e6074b1461027057806329dcb0cf1461029b5780632b99d7e4146102c657806337b028ef146102ff57806338af3eed1461032a57806347680fca1461038157806351cff8d9146103c6578063590e1ae31461040957806369d596fc14610420578063717d63a41461044f5780637923de2a146104bc5780637b3e5e7b1461051357806383197ef01461053e578063966778061461055557806396b6a34e146105ba5780639d5b06f7146105e75780639ec45bbe146106125780639f5557981461063f578063a3e9436c146106ac578063d6383230146106d7578063d7bb99ba14610702578063d9a992431461070c578063e88329691461073b578063e89e4ed61461076a578063f4163340146107c4575b600080fd5b34801561018657600080fd5b5061018f6107f3565b604051808215151515815260200191505060405180910390f35b3480156101b557600080fd5b506101be610806565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b50610215600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061080c565b604051808481526020018315151515815260200182151515158152602001935050505060405180910390f35b34801561024d57600080fd5b50610256610850565b604051808215151515815260200191505060405180910390f35b34801561027c57600080fd5b506102856108f1565b6040518082815260200191505060405180910390f35b3480156102a757600080fd5b506102b06108f7565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102fd600480360381019080803590602001909291908035151590602001909291905050506108fd565b005b34801561030b57600080fd5b50610314610e68565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061033f610e6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038d57600080fd5b506103ac60048036038101908080359060200190929190505050610e94565b604051808215151515815260200191505060405180910390f35b3480156103d257600080fd5b50610407600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb5565b005b34801561041557600080fd5b5061041e61122a565b005b34801561042c57600080fd5b5061044d60048036038101908080351515906020019092919050505061143e565b005b34801561045b57600080fd5b5061047a6004803603810190808035906020019092919050505061181c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c857600080fd5b506104fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185a565b6040518082815260200191505060405180910390f35b34801561051f57600080fd5b506105286118a6565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b506105536118ac565b005b34801561056157600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b2f565b604051808215151515815260200191505060405180910390f35b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611ba8565b005b3480156105f357600080fd5b506105fc61205d565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b5061063d60048036038101908080359060200190929190505050612063565b005b34801561064b57600080fd5b5061066a6004803603810190808035906020019092919050505061243c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b857600080fd5b506106c161247a565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b506106ec612480565b6040518082815260200191505060405180910390f35b61070a6124a1565b005b34801561071857600080fd5b50610721612a26565b604051808215151515815260200191505060405180910390f35b34801561074757600080fd5b50610750612a39565b604051808215151515815260200191505060405180910390f35b34801561077657600080fd5b5061079560048036038101908080359060200190929190505050612a4c565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156107d057600080fd5b506107d9612a98565b604051808215151515815260200191505060405180910390f35b600060019054906101000a900460ff1681565b60075481565b60096020528060005260406000206000915090508060000154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16905083565b600080600090505b600b805490508110156108e857600b8181548110151561087457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156108db57600191506108ed565b8080600101915050610858565b600091505b5090565b60055481565b60025481565b6000806000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515610ac7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010186815481101515610b1657fe5b90600052602060002090602091828204019190069054906101000a900460ff16935084151584151514151515610bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f566f74652076616c7565206d75737420626520646966666572656e742074686181526020017f6e206578697374696e6720766f7465207374617465000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515610beb57fe5b90600052602060002090600402016002015411925042600c87815481101515610c1057fe5b90600052602060002090600402016002015411159150828015610c31575081155b9050801515610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d696c6573746f6e6520766f74696e67206d757374206265206f70656e00000081525060200191505060405180910390fd5b84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010187815481101515610cf857fe5b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550841515610dc657610d9d600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610d7d57fe5b906000526020600020906004020160010154612abe90919063ffffffff16565b600c87815481101515610dac57fe5b906000526020600020906004020160010181905550610e60565b610e3b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600c88815481101515610e1b57fe5b906000526020600020906004020160010154612ad790919063ffffffff16565b600c87815481101515610e4a57fe5b9060005260206000209060040201600101819055505b505050505050565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454610ead600284612af390919063ffffffff16565b119050919050565b60008060008060019054906101000a900460ff161515610f3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515610fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff169250821515156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f537065636966696564206164647265737320697320616c72656164792072656681526020017f756e64656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160016101000a81548160ff021916908315150217905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154915061118d60055461117f3073ffffffffffffffffffffffffffffffffffffffff163185612af390919063ffffffff16565b612b2b90919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111d5573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a250505050565b60008060008060019054906101000a900460ff161515156112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6112bb610850565b92506112c5612a98565b91506112d2600754610e94565b905082806112dd5750815b806112e55750805b151561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f526571756972656420636f6e646974696f6e7320666f7220726566756e64206181526020017f7265206e6f74206d65740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b82156113ad5760008060006101000a81548160ff021916908360028111156113a357fe5b0217905550611400565b81156113db5760016000806101000a81548160ff021916908360028111156113d157fe5b02179055506113ff565b60026000806101000a81548160ff021916908360028111156113f957fe5b02179055505b5b6001600060016101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1631600581905550505050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515156114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616c6c6572206973206e6f74206120636f6e7472696275746f72000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff16151561157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff169050801515821515141515156116f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4578697374696e6720766f7465207374617465206973206964656e746963616c81526020017f20746f20766f74652076616c756500000000000000000000000000000000000081525060400191505060405180910390fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055508115156117ba576117af600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612abe90919063ffffffff16565b600781905550611818565b611811600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754612ad790919063ffffffff16565b6007819055505b5050565b600b8181548110151561182b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60045481565b6000806118b7610850565b151561192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff1615156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43726f776446756e64206973206e6f742066726f7a656e00000000000000000081525060200191505060405180910390fd5b600091505b600a80549050821015611af457600a828154811015156119d057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160019054906101000a900460ff161515611ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f4174206c65617374206f6e6520636f6e7472696275746f7220686173206e6f7481526020017f2079657420726566756e6465640000000000000000000000000000000000000081525060400191505060405180910390fd5b81806001019250506119b4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010182815481101515611b8057fe5b90600052602060002090602091828204019190069054906101000a900460ff16905092915050565b6000806000806000611bb8610850565b1515611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f742061207472757374656500000000000000000081525060200191505060405180910390fd5b600060029054906101000a900460ff161515611cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515611d35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b600c86815481101515611d4457fe5b906000526020600020906004020160030160009054906101000a900460ff16945042600c87815481101515611d7557fe5b906000526020600020906004020160020154119350611db3600c87815481101515611d9c57fe5b906000526020600020906004020160010154610e94565b925084151515611e2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d696c6573746f6e6520616c726561647920706169640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150600090505b600c80549050811015611ea457600c81815481101515611e6f57fe5b906000526020600020906004020160030160009054906101000a900460ff1615611e97578091505b8080600101915050611e53565b6001820186141515611f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4d696c6573746f6e652072657175657374206d75737420626520666f7220666981526020017f72737420756e70616964206d696c6573746f6e6500000000000000000000000081525060400191505060405180910390fd5b6000600c87815481101515611f5557fe5b9060005260206000209060040201600201541415611ff857600086148015611f895750600060039054906101000a900460ff165b15611fb9576001600c87815481101515611f9f57fe5b906000526020600020906004020160020181905550611ff3565b611fce60015442612ad790919063ffffffff16565b600c87815481101515611fdd57fe5b9060005260206000209060040201600201819055505b612055565b8380156120025750825b156120545761202f6120206002600154612af390919063ffffffff16565b42612ad790919063ffffffff16565b600c8781548110151561203e57fe5b9060005260206000209060040201600201819055505b5b505050505050565b60015481565b600080600080600060029054906101000a900460ff1615156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f526169736520676f616c206973206e6f7420726561636865640000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff16151515612172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b42600c8681548110151561218257fe5b9060005260206000209060040201600201541093506121c0600c868154811015156121a957fe5b906000526020600020906004020160010154610e94565b9250600c858154811015156121d157fe5b906000526020600020906004020160030160009054906101000a900460ff1691508380156121fd575082155b8015612207575081155b156123a1576001600c8681548110151561221d57fe5b906000526020600020906004020160030160006101000a81548160ff021916908315150217905550600c8581548110151561225457fe5b9060005260206000209060040201600001549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122d0573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a2600161235b86600c80549050612abe90919063ffffffff16565b141561239c57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b612435565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f726571756972656420636f6e646974696f6e732077657265206e6f742073617481526020017f697366696564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050505050565b600a8181548110151561244b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900460ff16600281111561249c57fe5b905090565b600080600060025442111580156124c55750600060029054906101000a900460ff16155b1515612539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43726f776446756e64206973206e6f74206f6e676f696e67000000000000000081525060200191505060405180910390fd5b600060019054906101000a900460ff161515156125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43726f776446756e642069732066726f7a656e0000000000000000000000000081525060200191505060405180910390fd5b6125d334600454612ad790919063ffffffff16565b92506003548311151515612675576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f436f6e747269627574696f6e206578636565647320746865207261697365206781526020017f6f616c2e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600654341015915060035483149050818061268d5750805b151561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d8152602001807f6d73672e76616c75652067726561746572207468616e206d696e696d756d2c2081526020017f6f72206d73672e76616c7565203d3d2072656d61696e696e6720616d6f756e7481526020017f20746f206265207261697365640000000000000000000000000000000000000081525060600191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561290857608060405190810160405280348152602001600c805490506040519080825280602002602001820160405280156127de5781602001602082028038833980820191505090505b50815260200160001515815260200160001515815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001019080519060200190612859929190612b41565b5060408201518160020160006101000a81548160ff02191690831515021790555060608201518160020160016101000a81548160ff021916908315150217905550905050600a3390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506129a4565b61295d34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612ad790919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b8260048190555060035460045414156129d3576001600060026101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040518082815260200191505060405180910390a2505050565b600060029054906101000a900460ff1681565b600060039054906101000a900460ff1681565b600c81815481101515612a5b57fe5b90600052602060002090600402016000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b60006002544210158015612ab95750600060029054906101000a900460ff16155b905090565b6000828211151515612acc57fe5b818303905092915050565b60008183019050828110151515612aea57fe5b80905092915050565b600080831415612b065760009050612b25565b8183029050818382811515612b1757fe5b04141515612b2157fe5b8090505b92915050565b60008183811515612b3857fe5b04905092915050565b82805482825590600052602060002090601f01602090048101928215612bd65791602002820160005b83821115612ba757835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302612b6a565b8015612bd45782816101000a81549060ff0219169055600101602081600001049283019260010302612ba7565b505b509050612be39190612be7565b5090565b612c1491905b80821115612c1057600081816101000a81549060ff021916905550600101612bed565b5090565b905600a165627a7a7230582051351396444f74bc4a8b3921cf045e1b2aea376db653835bbe15cc04725c9b3d0029a165627a7a72305820934808680be9c81f1fba40415b4ca3b9b11aaa579220c370ce09f0bdcdd30d220029", "sourceMap": "52:860:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52:860:1;;;;;;;", "deployedSourceMap": "52:860:1:-;;;;;;;;;;;;;;;;;;;;;;;;159:751;;8:9:-1;5:2;;;30:1;27;20:12;5:2;159:751:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;462:7;481:28;539:15;568:13;595:17;626:13;653:17;684:30;728:29;512:255;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;512:255:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;512:255:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;512:255:1;481:286;;782:37;798:20;782:37;;;;;;;;;;;;;;;;;;;;;;829:10;845:20;829:37;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;829:37:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:20;876:27;;159:751;;;;;;;;;;:::o;52:860::-;;;;;;;;;;:::o", "source": "pragma solidity ^0.4.24;\nimport \"./CrowdFund.sol\";\n\ncontract CrowdFundFactory {\n address[] crowdfunds;\n\n event ContractCreated(address newAddress);\n\n function createCrowdFund (\n uint raiseGoalAmount, \n address payOutAddress, \n address[] trusteesAddresses, \n uint[] allMilestones,\n uint durationInSeconds,\n uint milestoneVotingPeriodInSeconds,\n bool immediateFirstMilestonePayout\n ) public returns(address) {\n address newCrowdFundContract = new CrowdFund(\n raiseGoalAmount,\n payOutAddress,\n trusteesAddresses,\n allMilestones,\n durationInSeconds,\n milestoneVotingPeriodInSeconds,\n immediateFirstMilestonePayout\n );\n emit ContractCreated(newCrowdFundContract);\n crowdfunds.push(newCrowdFundContract);\n return newCrowdFundContract;\n }\n}", - "sourcePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFundFactory.sol", + "sourcePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFundFactory.sol", "ast": { - "absolutePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFundFactory.sol", + "absolutePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFundFactory.sol", "exportedSymbols": { "CrowdFundFactory": [ - 1138 + 1134 ] }, - "id": 1139, + "id": 1135, "nodeType": "SourceUnit", "nodes": [ { - "id": 1082, + "id": 1078, "literals": [ "solidity", "^", @@ -85,12 +85,12 @@ "src": "0:24:1" }, { - "absolutePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFund.sol", + "absolutePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFund.sol", "file": "./CrowdFund.sol", - "id": 1083, + "id": 1079, "nodeType": "ImportDirective", - "scope": 1139, - "sourceUnit": 1081, + "scope": 1135, + "sourceUnit": 1077, "src": "25:25:1", "symbolAliases": [], "unitAlias": "" @@ -98,24 +98,24 @@ { "baseContracts": [], "contractDependencies": [ - 1080 + 1076 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1138, + "id": 1134, "linearizedBaseContracts": [ - 1138 + 1134 ], "name": "CrowdFundFactory", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1086, + "id": 1082, "name": "crowdfunds", "nodeType": "VariableDeclaration", - "scope": 1138, + "scope": 1134, "src": "84:20:1", "stateVariable": true, "storageLocation": "default", @@ -125,7 +125,7 @@ }, "typeName": { "baseType": { - "id": 1084, + "id": 1080, "name": "address", "nodeType": "ElementaryTypeName", "src": "84:7:1", @@ -134,7 +134,7 @@ "typeString": "address" } }, - "id": 1085, + "id": 1081, "length": null, "nodeType": "ArrayTypeName", "src": "84:9:1", @@ -149,20 +149,20 @@ { "anonymous": false, "documentation": null, - "id": 1090, + "id": 1086, "name": "ContractCreated", "nodeType": "EventDefinition", "parameters": { - "id": 1089, + "id": 1085, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1088, + "id": 1084, "indexed": false, "name": "newAddress", "nodeType": "VariableDeclaration", - "scope": 1090, + "scope": 1086, "src": "133:18:1", "stateVariable": false, "storageLocation": "default", @@ -171,7 +171,7 @@ "typeString": "address" }, "typeName": { - "id": 1087, + "id": 1083, "name": "address", "nodeType": "ElementaryTypeName", "src": "133:7:1", @@ -190,21 +190,21 @@ }, { "body": { - "id": 1136, + "id": 1132, "nodeType": "Block", "src": "471:439:1", "statements": [ { "assignments": [ - 1112 + 1108 ], "declarations": [ { "constant": false, - "id": 1112, + "id": 1108, "name": "newCrowdFundContract", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "481:28:1", "stateVariable": false, "storageLocation": "default", @@ -213,7 +213,7 @@ "typeString": "address" }, "typeName": { - "id": 1111, + "id": 1107, "name": "address", "nodeType": "ElementaryTypeName", "src": "481:7:1", @@ -226,17 +226,17 @@ "visibility": "internal" } ], - "id": 1123, + "id": 1119, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1115, + "id": 1111, "name": "raiseGoalAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1092, + "referencedDeclaration": 1088, "src": "539:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -245,11 +245,11 @@ }, { "argumentTypes": null, - "id": 1116, + "id": 1112, "name": "payOutAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1094, + "referencedDeclaration": 1090, "src": "568:13:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -258,11 +258,11 @@ }, { "argumentTypes": null, - "id": 1117, + "id": 1113, "name": "trusteesAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1097, + "referencedDeclaration": 1093, "src": "595:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -271,11 +271,11 @@ }, { "argumentTypes": null, - "id": 1118, + "id": 1114, "name": "allMilestones", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1100, + "referencedDeclaration": 1096, "src": "626:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -284,11 +284,11 @@ }, { "argumentTypes": null, - "id": 1119, + "id": 1115, "name": "durationInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1102, + "referencedDeclaration": 1098, "src": "653:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -297,11 +297,11 @@ }, { "argumentTypes": null, - "id": 1120, + "id": 1116, "name": "milestoneVotingPeriodInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1104, + "referencedDeclaration": 1100, "src": "684:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -310,11 +310,11 @@ }, { "argumentTypes": null, - "id": 1121, + "id": 1117, "name": "immediateFirstMilestonePayout", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1106, + "referencedDeclaration": 1102, "src": "728:29:1", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -353,7 +353,7 @@ "typeString": "bool" } ], - "id": 1114, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -361,23 +361,23 @@ "nodeType": "NewExpression", "src": "512:13:1", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_contract$_CrowdFund_$1080_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_contract$_CrowdFund_$1076_$", "typeString": "function (uint256,address,address[] memory,uint256[] memory,uint256,uint256,bool) returns (contract CrowdFund)" }, "typeName": { "contractScope": null, - "id": 1113, + "id": 1109, "name": "CrowdFund", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1080, + "referencedDeclaration": 1076, "src": "516:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } } }, - "id": 1122, + "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, @@ -387,7 +387,7 @@ "nodeType": "FunctionCall", "src": "512:255:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } }, @@ -400,11 +400,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1125, + "id": 1121, "name": "newCrowdFundContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1108, "src": "798:20:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -419,18 +419,18 @@ "typeString": "address" } ], - "id": 1124, + "id": 1120, "name": "ContractCreated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1090, + "referencedDeclaration": 1086, "src": "782:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 1126, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, @@ -444,7 +444,7 @@ "typeString": "tuple()" } }, - "id": 1127, + "id": 1123, "nodeType": "EmitStatement", "src": "777:42:1" }, @@ -454,11 +454,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1131, + "id": 1127, "name": "newCrowdFundContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1108, "src": "845:20:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -475,18 +475,18 @@ ], "expression": { "argumentTypes": null, - "id": 1128, + "id": 1124, "name": "crowdfunds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, + "referencedDeclaration": 1082, "src": "829:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1130, + "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, @@ -500,7 +500,7 @@ "typeString": "function (address) returns (uint256)" } }, - "id": 1132, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": false, @@ -514,33 +514,33 @@ "typeString": "uint256" } }, - "id": 1133, + "id": 1129, "nodeType": "ExpressionStatement", "src": "829:37:1" }, { "expression": { "argumentTypes": null, - "id": 1134, + "id": 1130, "name": "newCrowdFundContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1108, "src": "883:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1110, - "id": 1135, + "functionReturnParameters": 1106, + "id": 1131, "nodeType": "Return", "src": "876:27:1" } ] }, "documentation": null, - "id": 1137, + "id": 1133, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -548,15 +548,15 @@ "name": "createCrowdFund", "nodeType": "FunctionDefinition", "parameters": { - "id": 1107, + "id": 1103, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1092, + "id": 1088, "name": "raiseGoalAmount", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "194:20:1", "stateVariable": false, "storageLocation": "default", @@ -565,7 +565,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1091, + "id": 1087, "name": "uint", "nodeType": "ElementaryTypeName", "src": "194:4:1", @@ -579,10 +579,10 @@ }, { "constant": false, - "id": 1094, + "id": 1090, "name": "payOutAddress", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "225:21:1", "stateVariable": false, "storageLocation": "default", @@ -591,7 +591,7 @@ "typeString": "address" }, "typeName": { - "id": 1093, + "id": 1089, "name": "address", "nodeType": "ElementaryTypeName", "src": "225:7:1", @@ -605,10 +605,10 @@ }, { "constant": false, - "id": 1097, + "id": 1093, "name": "trusteesAddresses", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "257:27:1", "stateVariable": false, "storageLocation": "default", @@ -618,7 +618,7 @@ }, "typeName": { "baseType": { - "id": 1095, + "id": 1091, "name": "address", "nodeType": "ElementaryTypeName", "src": "257:7:1", @@ -627,7 +627,7 @@ "typeString": "address" } }, - "id": 1096, + "id": 1092, "length": null, "nodeType": "ArrayTypeName", "src": "257:9:1", @@ -641,10 +641,10 @@ }, { "constant": false, - "id": 1100, + "id": 1096, "name": "allMilestones", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "295:20:1", "stateVariable": false, "storageLocation": "default", @@ -654,7 +654,7 @@ }, "typeName": { "baseType": { - "id": 1098, + "id": 1094, "name": "uint", "nodeType": "ElementaryTypeName", "src": "295:4:1", @@ -663,7 +663,7 @@ "typeString": "uint256" } }, - "id": 1099, + "id": 1095, "length": null, "nodeType": "ArrayTypeName", "src": "295:6:1", @@ -677,10 +677,10 @@ }, { "constant": false, - "id": 1102, + "id": 1098, "name": "durationInSeconds", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "325:22:1", "stateVariable": false, "storageLocation": "default", @@ -689,7 +689,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1101, + "id": 1097, "name": "uint", "nodeType": "ElementaryTypeName", "src": "325:4:1", @@ -703,10 +703,10 @@ }, { "constant": false, - "id": 1104, + "id": 1100, "name": "milestoneVotingPeriodInSeconds", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "357:35:1", "stateVariable": false, "storageLocation": "default", @@ -715,7 +715,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1103, + "id": 1099, "name": "uint", "nodeType": "ElementaryTypeName", "src": "357:4:1", @@ -729,10 +729,10 @@ }, { "constant": false, - "id": 1106, + "id": 1102, "name": "immediateFirstMilestonePayout", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "402:34:1", "stateVariable": false, "storageLocation": "default", @@ -741,7 +741,7 @@ "typeString": "bool" }, "typeName": { - "id": 1105, + "id": 1101, "name": "bool", "nodeType": "ElementaryTypeName", "src": "402:4:1", @@ -758,15 +758,15 @@ }, "payable": false, "returnParameters": { - "id": 1110, + "id": 1106, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1109, + "id": 1105, "name": "", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "462:7:1", "stateVariable": false, "storageLocation": "default", @@ -775,7 +775,7 @@ "typeString": "address" }, "typeName": { - "id": 1108, + "id": 1104, "name": "address", "nodeType": "ElementaryTypeName", "src": "462:7:1", @@ -790,31 +790,31 @@ ], "src": "461:9:1" }, - "scope": 1138, + "scope": 1134, "src": "159:751:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1139, + "scope": 1135, "src": "52:860:1" } ], "src": "0:912:1" }, "legacyAST": { - "absolutePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFundFactory.sol", + "absolutePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFundFactory.sol", "exportedSymbols": { "CrowdFundFactory": [ - 1138 + 1134 ] }, - "id": 1139, + "id": 1135, "nodeType": "SourceUnit", "nodes": [ { - "id": 1082, + "id": 1078, "literals": [ "solidity", "^", @@ -825,12 +825,12 @@ "src": "0:24:1" }, { - "absolutePath": "/Users/danielternyak2/ActiveDevelopment/grant-monorepo/contract/contracts/CrowdFund.sol", + "absolutePath": "/Users/will/Documents/grant-monorepo/contract/contracts/CrowdFund.sol", "file": "./CrowdFund.sol", - "id": 1083, + "id": 1079, "nodeType": "ImportDirective", - "scope": 1139, - "sourceUnit": 1081, + "scope": 1135, + "sourceUnit": 1077, "src": "25:25:1", "symbolAliases": [], "unitAlias": "" @@ -838,24 +838,24 @@ { "baseContracts": [], "contractDependencies": [ - 1080 + 1076 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1138, + "id": 1134, "linearizedBaseContracts": [ - 1138 + 1134 ], "name": "CrowdFundFactory", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1086, + "id": 1082, "name": "crowdfunds", "nodeType": "VariableDeclaration", - "scope": 1138, + "scope": 1134, "src": "84:20:1", "stateVariable": true, "storageLocation": "default", @@ -865,7 +865,7 @@ }, "typeName": { "baseType": { - "id": 1084, + "id": 1080, "name": "address", "nodeType": "ElementaryTypeName", "src": "84:7:1", @@ -874,7 +874,7 @@ "typeString": "address" } }, - "id": 1085, + "id": 1081, "length": null, "nodeType": "ArrayTypeName", "src": "84:9:1", @@ -889,20 +889,20 @@ { "anonymous": false, "documentation": null, - "id": 1090, + "id": 1086, "name": "ContractCreated", "nodeType": "EventDefinition", "parameters": { - "id": 1089, + "id": 1085, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1088, + "id": 1084, "indexed": false, "name": "newAddress", "nodeType": "VariableDeclaration", - "scope": 1090, + "scope": 1086, "src": "133:18:1", "stateVariable": false, "storageLocation": "default", @@ -911,7 +911,7 @@ "typeString": "address" }, "typeName": { - "id": 1087, + "id": 1083, "name": "address", "nodeType": "ElementaryTypeName", "src": "133:7:1", @@ -930,21 +930,21 @@ }, { "body": { - "id": 1136, + "id": 1132, "nodeType": "Block", "src": "471:439:1", "statements": [ { "assignments": [ - 1112 + 1108 ], "declarations": [ { "constant": false, - "id": 1112, + "id": 1108, "name": "newCrowdFundContract", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "481:28:1", "stateVariable": false, "storageLocation": "default", @@ -953,7 +953,7 @@ "typeString": "address" }, "typeName": { - "id": 1111, + "id": 1107, "name": "address", "nodeType": "ElementaryTypeName", "src": "481:7:1", @@ -966,17 +966,17 @@ "visibility": "internal" } ], - "id": 1123, + "id": 1119, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1115, + "id": 1111, "name": "raiseGoalAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1092, + "referencedDeclaration": 1088, "src": "539:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -985,11 +985,11 @@ }, { "argumentTypes": null, - "id": 1116, + "id": 1112, "name": "payOutAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1094, + "referencedDeclaration": 1090, "src": "568:13:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -998,11 +998,11 @@ }, { "argumentTypes": null, - "id": 1117, + "id": 1113, "name": "trusteesAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1097, + "referencedDeclaration": 1093, "src": "595:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -1011,11 +1011,11 @@ }, { "argumentTypes": null, - "id": 1118, + "id": 1114, "name": "allMilestones", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1100, + "referencedDeclaration": 1096, "src": "626:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -1024,11 +1024,11 @@ }, { "argumentTypes": null, - "id": 1119, + "id": 1115, "name": "durationInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1102, + "referencedDeclaration": 1098, "src": "653:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1037,11 +1037,11 @@ }, { "argumentTypes": null, - "id": 1120, + "id": 1116, "name": "milestoneVotingPeriodInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1104, + "referencedDeclaration": 1100, "src": "684:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1050,11 +1050,11 @@ }, { "argumentTypes": null, - "id": 1121, + "id": 1117, "name": "immediateFirstMilestonePayout", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1106, + "referencedDeclaration": 1102, "src": "728:29:1", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1093,7 +1093,7 @@ "typeString": "bool" } ], - "id": 1114, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -1101,23 +1101,23 @@ "nodeType": "NewExpression", "src": "512:13:1", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_contract$_CrowdFund_$1080_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_contract$_CrowdFund_$1076_$", "typeString": "function (uint256,address,address[] memory,uint256[] memory,uint256,uint256,bool) returns (contract CrowdFund)" }, "typeName": { "contractScope": null, - "id": 1113, + "id": 1109, "name": "CrowdFund", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1080, + "referencedDeclaration": 1076, "src": "516:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } } }, - "id": 1122, + "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, @@ -1127,7 +1127,7 @@ "nodeType": "FunctionCall", "src": "512:255:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_CrowdFund_$1080", + "typeIdentifier": "t_contract$_CrowdFund_$1076", "typeString": "contract CrowdFund" } }, @@ -1140,11 +1140,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1125, + "id": 1121, "name": "newCrowdFundContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1108, "src": "798:20:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1159,18 +1159,18 @@ "typeString": "address" } ], - "id": 1124, + "id": 1120, "name": "ContractCreated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1090, + "referencedDeclaration": 1086, "src": "782:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 1126, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, @@ -1184,7 +1184,7 @@ "typeString": "tuple()" } }, - "id": 1127, + "id": 1123, "nodeType": "EmitStatement", "src": "777:42:1" }, @@ -1194,11 +1194,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1131, + "id": 1127, "name": "newCrowdFundContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1108, "src": "845:20:1", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1215,18 +1215,18 @@ ], "expression": { "argumentTypes": null, - "id": 1128, + "id": 1124, "name": "crowdfunds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, + "referencedDeclaration": 1082, "src": "829:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1130, + "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, @@ -1240,7 +1240,7 @@ "typeString": "function (address) returns (uint256)" } }, - "id": 1132, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": false, @@ -1254,33 +1254,33 @@ "typeString": "uint256" } }, - "id": 1133, + "id": 1129, "nodeType": "ExpressionStatement", "src": "829:37:1" }, { "expression": { "argumentTypes": null, - "id": 1134, + "id": 1130, "name": "newCrowdFundContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1112, + "referencedDeclaration": 1108, "src": "883:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1110, - "id": 1135, + "functionReturnParameters": 1106, + "id": 1131, "nodeType": "Return", "src": "876:27:1" } ] }, "documentation": null, - "id": 1137, + "id": 1133, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1288,15 +1288,15 @@ "name": "createCrowdFund", "nodeType": "FunctionDefinition", "parameters": { - "id": 1107, + "id": 1103, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1092, + "id": 1088, "name": "raiseGoalAmount", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "194:20:1", "stateVariable": false, "storageLocation": "default", @@ -1305,7 +1305,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1091, + "id": 1087, "name": "uint", "nodeType": "ElementaryTypeName", "src": "194:4:1", @@ -1319,10 +1319,10 @@ }, { "constant": false, - "id": 1094, + "id": 1090, "name": "payOutAddress", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "225:21:1", "stateVariable": false, "storageLocation": "default", @@ -1331,7 +1331,7 @@ "typeString": "address" }, "typeName": { - "id": 1093, + "id": 1089, "name": "address", "nodeType": "ElementaryTypeName", "src": "225:7:1", @@ -1345,10 +1345,10 @@ }, { "constant": false, - "id": 1097, + "id": 1093, "name": "trusteesAddresses", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "257:27:1", "stateVariable": false, "storageLocation": "default", @@ -1358,7 +1358,7 @@ }, "typeName": { "baseType": { - "id": 1095, + "id": 1091, "name": "address", "nodeType": "ElementaryTypeName", "src": "257:7:1", @@ -1367,7 +1367,7 @@ "typeString": "address" } }, - "id": 1096, + "id": 1092, "length": null, "nodeType": "ArrayTypeName", "src": "257:9:1", @@ -1381,10 +1381,10 @@ }, { "constant": false, - "id": 1100, + "id": 1096, "name": "allMilestones", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "295:20:1", "stateVariable": false, "storageLocation": "default", @@ -1394,7 +1394,7 @@ }, "typeName": { "baseType": { - "id": 1098, + "id": 1094, "name": "uint", "nodeType": "ElementaryTypeName", "src": "295:4:1", @@ -1403,7 +1403,7 @@ "typeString": "uint256" } }, - "id": 1099, + "id": 1095, "length": null, "nodeType": "ArrayTypeName", "src": "295:6:1", @@ -1417,10 +1417,10 @@ }, { "constant": false, - "id": 1102, + "id": 1098, "name": "durationInSeconds", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "325:22:1", "stateVariable": false, "storageLocation": "default", @@ -1429,7 +1429,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1101, + "id": 1097, "name": "uint", "nodeType": "ElementaryTypeName", "src": "325:4:1", @@ -1443,10 +1443,10 @@ }, { "constant": false, - "id": 1104, + "id": 1100, "name": "milestoneVotingPeriodInSeconds", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "357:35:1", "stateVariable": false, "storageLocation": "default", @@ -1455,7 +1455,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1103, + "id": 1099, "name": "uint", "nodeType": "ElementaryTypeName", "src": "357:4:1", @@ -1469,10 +1469,10 @@ }, { "constant": false, - "id": 1106, + "id": 1102, "name": "immediateFirstMilestonePayout", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "402:34:1", "stateVariable": false, "storageLocation": "default", @@ -1481,7 +1481,7 @@ "typeString": "bool" }, "typeName": { - "id": 1105, + "id": 1101, "name": "bool", "nodeType": "ElementaryTypeName", "src": "402:4:1", @@ -1498,15 +1498,15 @@ }, "payable": false, "returnParameters": { - "id": 1110, + "id": 1106, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1109, + "id": 1105, "name": "", "nodeType": "VariableDeclaration", - "scope": 1137, + "scope": 1133, "src": "462:7:1", "stateVariable": false, "storageLocation": "default", @@ -1515,7 +1515,7 @@ "typeString": "address" }, "typeName": { - "id": 1108, + "id": 1104, "name": "address", "nodeType": "ElementaryTypeName", "src": "462:7:1", @@ -1530,14 +1530,14 @@ ], "src": "461:9:1" }, - "scope": 1138, + "scope": 1134, "src": "159:751:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1139, + "scope": 1135, "src": "52:860:1" } ], @@ -1548,19 +1548,25 @@ "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { - "3": { + "1541435837030": { "events": {}, "links": {}, - "address": "0x2bfade54e1afc13d50bcb14b8134aafc0be59558", - "transactionHash": "0xf9aa2d035873d9ae6f3bf1d3a254ca774c22b2cd37c3d92ee41218fe3677e5f2" + "address": "0x893717db73a6f9785772080b3a0bc9cd24b27ea2", + "transactionHash": "0xe7b84dc8a577ba38bebf38cc2928ed550ab00de70b5000c334d6d1137b223ad1" }, - "1537836920395": { + "1541447574419": { "events": {}, "links": {}, - "address": "0xf313d4b4f8c2467d6552c51392076ba90aa233b3", - "transactionHash": "0x6158097c6dcb93aeaad4b21ea540bf2a97d52050c04d36e54558df1aff60bbb8" + "address": "0x0f919d15940c0a6c11ee6f4c88ae5d03d91246bf", + "transactionHash": "0xa0259d1a6924f52fb52017ad410a860083749e4d444a29f02ed70309b831a123" + }, + "1542400539532": { + "events": {}, + "links": {}, + "address": "0x23de420265da56889af074254dd900bc888efbf6", + "transactionHash": "0xa0259d1a6924f52fb52017ad410a860083749e4d444a29f02ed70309b831a123" } }, "schemaVersion": "2.0.1", - "updatedAt": "2018-09-26T04:00:55.909Z" + "updatedAt": "2018-11-16T20:37:00.160Z" } \ No newline at end of file diff --git a/frontend/client/api/api.ts b/frontend/client/api/api.ts index 0a5070ae..339dc029 100644 --- a/frontend/client/api/api.ts +++ b/frontend/client/api/api.ts @@ -2,21 +2,16 @@ import axios from './axios'; import { Proposal, ProposalDraft, - TeamMember, + User, Update, TeamInvite, TeamInviteWithProposal, } from 'types'; -import { - formatTeamMemberForPost, - formatTeamMemberFromGet, - generateProposalUrl, -} from 'utils/api'; +import { formatUserForPost, generateProposalUrl } from 'utils/api'; export function getProposals(): Promise<{ data: Proposal[] }> { return axios.get('/api/v1/proposals/').then(res => { res.data = res.data.map((proposal: any) => { - proposal.team = proposal.team.map(formatTeamMemberFromGet); proposal.proposalUrlId = generateProposalUrl(proposal.proposalId, proposal.title); return proposal; }); @@ -26,7 +21,6 @@ export function getProposals(): Promise<{ data: Proposal[] }> { export function getProposal(proposalId: number | string): Promise<{ data: Proposal }> { return axios.get(`/api/v1/proposals/${proposalId}`).then(res => { - res.data.team = res.data.team.map(formatTeamMemberFromGet); res.data.proposalUrlId = generateProposalUrl(res.data.proposalId, res.data.title); return res; }); @@ -44,15 +38,12 @@ export function postProposal(payload: ProposalDraft) { return axios.post(`/api/v1/proposals/`, { ...payload, // Team has a different shape for POST - team: payload.team.map(formatTeamMemberForPost), + team: payload.team.map(formatUserForPost), }); } -export function getUser(address: string): Promise<{ data: TeamMember }> { - return axios.get(`/api/v1/users/${address}`).then(res => { - res.data = formatTeamMemberFromGet(res.data); - return res; - }); +export function getUser(address: string): Promise<{ data: User }> { + return axios.get(`/api/v1/users/${address}`); } export function createUser(payload: { @@ -62,31 +53,20 @@ export function createUser(payload: { title: string; signedMessage: string; rawTypedData: string; -}): Promise<{ data: TeamMember }> { - return axios.post('/api/v1/users', payload).then(res => { - res.data = formatTeamMemberFromGet(res.data); - return res; - }); +}): Promise<{ data: User }> { + return axios.post('/api/v1/users', payload); } export function authUser(payload: { accountAddress: string; signedMessage: string; rawTypedData: string; -}): Promise<{ data: TeamMember }> { - return axios.post('/api/v1/users/auth', payload).then(res => { - res.data = formatTeamMemberFromGet(res.data); - return res; - }); +}): Promise<{ data: User }> { + return axios.post('/api/v1/users/auth', payload); } -export function updateUser(user: TeamMember): Promise<{ data: TeamMember }> { - return axios - .put(`/api/v1/users/${user.ethAddress}`, formatTeamMemberForPost(user)) - .then(res => { - res.data = formatTeamMemberFromGet(res.data); - return res; - }); +export function updateUser(user: User): Promise<{ data: User }> { + return axios.put(`/api/v1/users/${user.accountAddress}`, formatUserForPost(user)); } export function verifyEmail(code: string): Promise { @@ -105,13 +85,7 @@ export function postProposalUpdate( } export function getProposalDrafts(): Promise<{ data: ProposalDraft[] }> { - return axios.get('/api/v1/proposals/drafts').then(res => { - res.data = res.data.map((draft: any) => ({ - ...draft, - team: draft.team.map(formatTeamMemberFromGet), - })); - return res; - }); + return axios.get('/api/v1/proposals/drafts'); } export function postProposalDraft(): Promise<{ data: ProposalDraft }> { diff --git a/frontend/client/components/AuthFlow/SignIn.tsx b/frontend/client/components/AuthFlow/SignIn.tsx index 78ef6a08..e9848eba 100644 --- a/frontend/client/components/AuthFlow/SignIn.tsx +++ b/frontend/client/components/AuthFlow/SignIn.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { Button, Alert } from 'antd'; import { authActions } from 'modules/auth'; -import { TeamMember } from 'types'; +import { User } from 'types'; import { AppState } from 'store/reducers'; import { AUTH_PROVIDER } from 'utils/auth'; import Identicon from 'components/Identicon'; @@ -20,7 +20,7 @@ interface DispatchProps { interface OwnProps { // TODO: Use common use User type instead - user: TeamMember; + user: User; provider: AUTH_PROVIDER; reset(): void; } @@ -34,11 +34,14 @@ class SignIn extends React.Component {
- +
-
{user.name}
+
{user.displayName}
- +
@@ -69,7 +72,7 @@ class SignIn extends React.Component { } private authUser = () => { - this.props.authUser(this.props.user.ethAddress); + this.props.authUser(this.props.user.accountAddress); }; } diff --git a/frontend/client/components/CreateFlow/Review.tsx b/frontend/client/components/CreateFlow/Review.tsx index fab1ccd2..dafbc8ee 100644 --- a/frontend/client/components/CreateFlow/Review.tsx +++ b/frontend/client/components/CreateFlow/Review.tsx @@ -218,7 +218,7 @@ const ReviewTeam: React.SFC<{
-
{u.name}
+
{u.displayName}
{u.title}
diff --git a/frontend/client/components/CreateFlow/Team.tsx b/frontend/client/components/CreateFlow/Team.tsx index f09e48ad..330a4f59 100644 --- a/frontend/client/components/CreateFlow/Team.tsx +++ b/frontend/client/components/CreateFlow/Team.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { Icon, Form, Input, Button, Popconfirm, message } from 'antd'; -import { TeamMember, TeamInvite, ProposalDraft } from 'types'; +import { User, TeamInvite, ProposalDraft } from 'types'; import TeamMemberComponent from './TeamMember'; import { postProposalInvite, deleteProposalInvite } from 'api/api'; import { isValidEthAddress, isValidEmail } from 'utils/validators'; @@ -9,7 +9,7 @@ import { AppState } from 'store/reducers'; import './Team.less'; interface State { - team: TeamMember[]; + team: User[]; invites: TeamInvite[]; address: string; } @@ -28,16 +28,7 @@ type Props = OwnProps & StateProps; const MAX_TEAM_SIZE = 6; const DEFAULT_STATE: State = { - team: [ - { - name: '', - title: '', - avatarUrl: '', - ethAddress: '', - emailAddress: '', - socialAccounts: {}, - }, - ], + team: [], invites: [], address: '', }; @@ -50,16 +41,8 @@ class CreateFlowTeam extends React.Component { ...(props.initialState || {}), }; - // Don't allow for empty team array - if (!this.state.team.length) { - this.state = { - ...this.state, - team: [...DEFAULT_STATE.team], - }; - } - // Auth'd user is always first member of a team - if (props.authUser) { + if (props.authUser && !this.state.team.length) { this.state.team[0] = { ...props.authUser, }; @@ -77,8 +60,8 @@ class CreateFlowTeam extends React.Component { return (
- {team.map((user, idx) => ( - + {team.map(user => ( + ))} {!!pendingInvites.length && (
diff --git a/frontend/client/components/CreateFlow/TeamMember.tsx b/frontend/client/components/CreateFlow/TeamMember.tsx index 86deaf73..39f13478 100644 --- a/frontend/client/components/CreateFlow/TeamMember.tsx +++ b/frontend/client/components/CreateFlow/TeamMember.tsx @@ -2,18 +2,17 @@ import React from 'react'; import classnames from 'classnames'; import { Icon } from 'antd'; import { SOCIAL_INFO } from 'utils/social'; -import { TeamMember } from 'types'; +import { User } from 'types'; import UserAvatar from 'components/UserAvatar'; import './TeamMember.less'; interface Props { - index: number; - user: TeamMember; + user: User; } export default class CreateFlowTeamMember extends React.PureComponent { render() { - const { user, index } = this.props; + const { user } = this.props; return (
@@ -21,11 +20,13 @@ export default class CreateFlowTeamMember extends React.PureComponent {
-
{user.name || No name}
+
+ {user.displayName || No name} +
{user.title || No title}
{Object.values(SOCIAL_INFO).map(s => { - const account = user.socialAccounts[s.type]; + const account = user.socialMedias.find(sm => s.service === sm.service); const cn = classnames( 'TeamMember-info-social-icon', account && 'is-active', diff --git a/frontend/client/components/Profile/ProfileEdit.tsx b/frontend/client/components/Profile/ProfileEdit.tsx index 974b2a1b..81b71b9d 100644 --- a/frontend/client/components/Profile/ProfileEdit.tsx +++ b/frontend/client/components/Profile/ProfileEdit.tsx @@ -2,7 +2,7 @@ import React from 'react'; import lodash from 'lodash'; import { Input, Form, Col, Row, Button, Icon, Alert } from 'antd'; import { SOCIAL_INFO } from 'utils/social'; -import { SOCIAL_TYPE, TeamMember } from 'types'; +import { SOCIAL_SERVICE, User } from 'types'; import { UserState } from 'modules/users/reducers'; import { getCreateTeamMemberError } from 'modules/create/utils'; import UserAvatar from 'components/UserAvatar'; @@ -11,18 +11,18 @@ import './ProfileEdit.less'; interface Props { user: UserState; onDone(): void; - onEdit(user: TeamMember): void; + onEdit(user: User): void; } interface State { - fields: TeamMember; + fields: User; isChanged: boolean; showError: boolean; } export default class ProfileEdit extends React.PureComponent { state: State = { - fields: { ...this.props.user } as TeamMember, + fields: { ...this.props.user } as User, isChanged: false, showError: false, }; @@ -48,7 +48,10 @@ export default class ProfileEdit extends React.PureComponent { const { fields } = this.state; const error = getCreateTeamMemberError(fields); const isMissingField = - !fields.name || !fields.title || !fields.emailAddress || !fields.ethAddress; + !fields.displayName || + !fields.title || + !fields.emailAddress || + !fields.accountAddress; const isDisabled = !!error || isMissingField || !this.state.isChanged; return ( @@ -62,11 +65,11 @@ export default class ProfileEdit extends React.PureComponent { > -
{fields.avatarUrl ? 'Change photo' : 'Add photo'}
+
{fields.avatar ? 'Change photo' : 'Add photo'}
- {fields.avatarUrl && ( + {fields.avatar && (
diff --git a/frontend/client/components/Profile/ProfileUser.tsx b/frontend/client/components/Profile/ProfileUser.tsx index 33cbf998..a660301b 100644 --- a/frontend/client/components/Profile/ProfileUser.tsx +++ b/frontend/client/components/Profile/ProfileUser.tsx @@ -1,13 +1,12 @@ import React from 'react'; import { connect } from 'react-redux'; import { Button } from 'antd'; -import { SocialInfo } from 'types'; +import { SocialMedia } from 'types'; import { usersActions } from 'modules/users'; import { UserState } from 'modules/users/reducers'; -import { typedKeys } from 'utils/ts'; import ProfileEdit from './ProfileEdit'; import UserAvatar from 'components/UserAvatar'; -import { SOCIAL_INFO, socialAccountToUrl } from 'utils/social'; +import { SOCIAL_INFO, socialMediaToUrl } from 'utils/social'; import ShortAddress from 'components/ShortAddress'; import './ProfileUser.less'; import { AppState } from 'store/reducers'; @@ -39,10 +38,10 @@ class ProfileUser extends React.Component { const { authUser, user, - user: { socialAccounts }, + user: { socialMedias }, } = this.props; - const isSelf = !!authUser && authUser.ethAddress === user.ethAddress; + const isSelf = !!authUser && authUser.accountAddress === user.accountAddress; if (this.state.isEditing) { return ( @@ -60,7 +59,7 @@ class ProfileUser extends React.Component {
-
{user.name}
+
{user.displayName}
{user.title}
{user.emailAddress && ( @@ -69,26 +68,18 @@ class ProfileUser extends React.Component { {user.emailAddress}
)} - {user.ethAddress && ( + {user.accountAddress && (
ethereum address - +
)}
- {Object.keys(socialAccounts).length > 0 && ( + {socialMedias.length > 0 && (
- {typedKeys(SOCIAL_INFO).map( - s => - (socialAccounts[s] && ( - - )) || - null, - )} + {socialMedias.map(sm => ( + + ))}
)} {isSelf && ( @@ -104,10 +95,12 @@ class ProfileUser extends React.Component { } } -const Social = ({ account, info }: { account: string; info: SocialInfo }) => { +const Social = ({ socialMedia }: { socialMedia: SocialMedia }) => { return ( - -
{info.icon}
+
+
+ {SOCIAL_INFO[socialMedia.service].icon} +
); }; diff --git a/frontend/client/components/Profile/index.tsx b/frontend/client/components/Profile/index.tsx index 88a16a5a..2dc7114e 100644 --- a/frontend/client/components/Profile/index.tsx +++ b/frontend/client/components/Profile/index.tsx @@ -5,7 +5,7 @@ import { usersActions } from 'modules/users'; import { AppState } from 'store/reducers'; import { connect } from 'react-redux'; import { compose } from 'recompose'; -import { Spin, Tabs, Badge, message } from 'antd'; +import { Spin, Tabs, Badge } from 'antd'; import HeaderDetails from 'components/HeaderDetails'; import ProfileUser from './ProfileUser'; import ProfileProposal from './ProfileProposal'; @@ -46,8 +46,8 @@ class Profile extends React.Component { const userLookupParam = this.props.match.params.id; const { authUser } = this.props; if (!userLookupParam) { - if (authUser && authUser.ethAddress) { - return ; + if (authUser && authUser.accountAddress) { + return ; } else { return ; } @@ -56,7 +56,8 @@ class Profile extends React.Component { const user = this.props.usersMap[userLookupParam]; const waiting = !user || !user.hasFetched; // TODO: Replace with userid checks - const isAuthedUser = user && authUser && user.ethAddress === authUser.ethAddress; + const isAuthedUser = + user && authUser && user.accountAddress === authUser.accountAddress; if (waiting) { return ; @@ -77,9 +78,9 @@ class Profile extends React.Component { {/* TODO: SSR fetch user details */} {/* TODO: customize details for funders/creators */} @@ -117,7 +118,11 @@ class Profile extends React.Component {
{noneCommented && } {comments.map(c => ( - + ))}
@@ -137,7 +142,7 @@ class Profile extends React.Component { {invites.map(invite => ( ))} diff --git a/frontend/client/components/Proposal/TeamBlock/index.tsx b/frontend/client/components/Proposal/TeamBlock/index.tsx index 2b50a15e..bed95932 100644 --- a/frontend/client/components/Proposal/TeamBlock/index.tsx +++ b/frontend/client/components/Proposal/TeamBlock/index.tsx @@ -10,7 +10,7 @@ interface Props { const TeamBlock = ({ proposal }: Props) => { let content; if (proposal) { - content = proposal.team.map(user => ); + content = proposal.team.map(user => ); } else { content = ; } diff --git a/frontend/client/components/Proposals/ProposalCard/index.tsx b/frontend/client/components/Proposals/ProposalCard/index.tsx index da0e99d1..63f4e7a1 100644 --- a/frontend/client/components/Proposals/ProposalCard/index.tsx +++ b/frontend/client/components/Proposals/ProposalCard/index.tsx @@ -65,7 +65,8 @@ export class ProposalCard extends React.Component {
- {team[0].name} {team.length > 1 && +{team.length - 1} other} + {team[0].displayName}{' '} + {team.length > 1 && +{team.length - 1} other}
{[...team].reverse().map((u, idx) => ( diff --git a/frontend/client/components/UserAvatar.tsx b/frontend/client/components/UserAvatar.tsx index f16166d6..71028334 100644 --- a/frontend/client/components/UserAvatar.tsx +++ b/frontend/client/components/UserAvatar.tsx @@ -1,18 +1,18 @@ import React from 'react'; import Identicon from 'components/Identicon'; -import { TeamMember } from 'types'; +import { User } from 'types'; import defaultUserImg from 'static/images/default-user.jpg'; interface Props { - user: TeamMember; + user: User; className?: string; } const UserAvatar: React.SFC = ({ user, className }) => { - if (user.avatarUrl) { - return ; - } else if (user.ethAddress) { - return ; + if (user.avatar && user.avatar.image_url) { + return ; + } else if (user.accountAddress) { + return ; } else { return ; } diff --git a/frontend/client/components/UserRow/index.tsx b/frontend/client/components/UserRow/index.tsx index 82da12db..fff76bc9 100644 --- a/frontend/client/components/UserRow/index.tsx +++ b/frontend/client/components/UserRow/index.tsx @@ -1,20 +1,20 @@ import React from 'react'; import UserAvatar from 'components/UserAvatar'; -import { TeamMember } from 'types'; +import { User } from 'types'; import { Link } from 'react-router-dom'; import './style.less'; interface Props { - user: TeamMember; + user: User; } const UserRow = ({ user }: Props) => ( - +
-
{user.name}
+
{user.displayName}

{user.title}

diff --git a/frontend/client/modules/auth/reducers.ts b/frontend/client/modules/auth/reducers.ts index 4bfa9085..1a230dce 100644 --- a/frontend/client/modules/auth/reducers.ts +++ b/frontend/client/modules/auth/reducers.ts @@ -1,13 +1,13 @@ import types from './types'; // TODO: Use a common User type instead of this -import { TeamMember, AuthSignatureData } from 'types'; +import { User, AuthSignatureData } from 'types'; export interface AuthState { - user: TeamMember | null; + user: User | null; isAuthingUser: boolean; authUserError: string | null; - checkedUsers: { [address: string]: TeamMember | false }; + checkedUsers: { [address: string]: User | false }; isCheckingUser: boolean; isCreatingUser: boolean; @@ -53,7 +53,7 @@ export default function createReducer( ...state, user: action.payload.user, authSignature: action.payload.authSignature, // TODO: Make this the real token - authSignatureAddress: action.payload.user.ethAddress, + authSignatureAddress: action.payload.user.accountAddress, isAuthingUser: false, }; case types.AUTH_USER_REJECTED: @@ -74,7 +74,7 @@ export default function createReducer( ...state, user: action.payload.user, authSignature: action.payload.authSignature, - authSignatureAddress: action.payload.user.ethAddress, + authSignatureAddress: action.payload.user.accountAddress, isCreatingUser: false, checkedUsers: { ...state.checkedUsers, diff --git a/frontend/client/modules/create/utils.ts b/frontend/client/modules/create/utils.ts index c455b09d..e22e84f5 100644 --- a/frontend/client/modules/create/utils.ts +++ b/frontend/client/modules/create/utils.ts @@ -1,5 +1,5 @@ import { ProposalDraft, CreateMilestone } from 'types'; -import { TeamMember } from 'types'; +import { User } from 'types'; import { isValidEthAddress, getAmountError } from 'utils/validators'; import { MILESTONE_STATE, ProposalWithCrowdFund } from 'types'; import { ProposalContractData } from 'modules/web3/actions'; @@ -153,7 +153,7 @@ export function getCreateErrors( if (team) { let didTeamError = false; const teamErrors = team.map(u => { - if (!u.name || !u.title || !u.emailAddress || !u.ethAddress) { + if (!u.displayName || !u.title || !u.emailAddress || !u.accountAddress) { didTeamError = true; return ''; } @@ -170,14 +170,14 @@ export function getCreateErrors( return errors; } -export function getCreateTeamMemberError(user: TeamMember) { - if (user.name.length > 30) { +export function getCreateTeamMemberError(user: User) { + if (user.displayName.length > 30) { return 'Display name can only be 30 characters maximum'; } else if (user.title.length > 30) { return 'Title can only be 30 characters maximum'; } else if (!/.+\@.+\..+/.test(user.emailAddress)) { return 'That doesn’t look like a valid email address'; - } else if (!isValidEthAddress(user.ethAddress)) { + } else if (!isValidEthAddress(user.accountAddress)) { return 'That doesn’t look like a valid ETH address'; } @@ -235,6 +235,7 @@ export function makeProposalPreviewFromDraft( proposalAddress: '0x0', dateCreated: Date.now(), title: draft.title, + brief: draft.brief, content: draft.content, stage: 'preview', category: draft.category || PROPOSAL_CATEGORY.DAPP, diff --git a/frontend/client/modules/users/actions.ts b/frontend/client/modules/users/actions.ts index bfd4a24d..5224f4ac 100644 --- a/frontend/client/modules/users/actions.ts +++ b/frontend/client/modules/users/actions.ts @@ -1,4 +1,4 @@ -import { UserProposal, UserComment, TeamMember } from 'types'; +import { UserProposal, UserComment, User } from 'types'; import types from './types'; import { getUser, @@ -28,7 +28,7 @@ export function fetchUser(userFetchId: string) { }; } -export function updateUser(user: TeamMember) { +export function updateUser(user: User) { const userClone = cleanClone(INITIAL_TEAM_MEMBER_STATE, user); return async (dispatch: Dispatch) => { dispatch({ type: types.UPDATE_USER_PENDING, payload: { user } }); diff --git a/frontend/client/modules/users/reducers.ts b/frontend/client/modules/users/reducers.ts index 58626eac..c5a09705 100644 --- a/frontend/client/modules/users/reducers.ts +++ b/frontend/client/modules/users/reducers.ts @@ -1,14 +1,14 @@ import lodash from 'lodash'; import { UserProposal, UserComment, TeamInviteWithProposal } from 'types'; import types from './types'; -import { TeamMember } from 'types'; +import { User } from 'types'; export interface TeamInviteWithResponse extends TeamInviteWithProposal { isResponding: boolean; respondError: number | null; } -export interface UserState extends TeamMember { +export interface UserState extends User { isFetching: boolean; hasFetched: boolean; fetchError: number | null; @@ -36,12 +36,13 @@ export interface UsersState { map: { [index: string]: UserState }; } -export const INITIAL_TEAM_MEMBER_STATE: TeamMember = { - ethAddress: '', - avatarUrl: '', - name: '', +export const INITIAL_TEAM_MEMBER_STATE: User = { + userid: 0, + accountAddress: '', + avatar: null, + displayName: '', emailAddress: '', - socialAccounts: {}, + socialMedias: [], title: '', }; @@ -105,19 +106,19 @@ export default (state = INITIAL_STATE, action: any) => { }); // update case types.UPDATE_USER_PENDING: - return updateUserState(state, payload.user.ethAddress, { + return updateUserState(state, payload.user.accountAddress, { isUpdating: true, updateError: null, }); case types.UPDATE_USER_FULFILLED: return updateUserState( state, - payload.user.ethAddress, + payload.user.accountAddress, { isUpdating: false }, payload.user, ); case types.UPDATE_USER_REJECTED: - return updateUserState(state, payload.user.ethAddress, { + return updateUserState(state, payload.user.accountAddress, { isUpdating: false, updateError: errorStatus, }); diff --git a/frontend/client/pages/settings.tsx b/frontend/client/pages/settings.tsx index 0f8e486f..0df42939 100644 --- a/frontend/client/pages/settings.tsx +++ b/frontend/client/pages/settings.tsx @@ -9,7 +9,7 @@ interface Props { class ProfilePage extends React.Component { render() { const { user } = this.props; - return

Settings for {user && user.name}

; + return

Settings for {user && user.displayName}

; } } diff --git a/frontend/client/utils/api.ts b/frontend/client/utils/api.ts index c4d30672..434afa87 100644 --- a/frontend/client/utils/api.ts +++ b/frontend/client/utils/api.ts @@ -1,29 +1,11 @@ -import { TeamMember } from 'types'; -import { socialAccountsToUrls, socialUrlsToAccounts } from 'utils/social'; +import { User } from 'types'; +import { socialMediaToUrl } from 'utils/social'; -export function formatTeamMemberForPost(user: TeamMember) { +export function formatUserForPost(user: User) { return { - displayName: user.name, - title: user.title, - accountAddress: user.ethAddress, - emailAddress: user.emailAddress, - avatar: user.avatarUrl ? { link: user.avatarUrl } : {}, - socialMedias: socialAccountsToUrls(user.socialAccounts).map(url => ({ - link: url, - })), - }; -} - -export function formatTeamMemberFromGet(user: any): TeamMember { - return { - name: user.displayName, - title: user.title, - ethAddress: user.accountAddress, - emailAddress: user.emailAddress, - avatarUrl: user.avatar && user.avatar.imageUrl, - socialAccounts: socialUrlsToAccounts( - user.socialMedias.map((sm: any) => sm.socialMediaLink), - ), + ...user, + avatar: user.avatar ? user.avatar.image_url : null, + socialMedias: user.socialMedias.map(socialMediaToUrl), }; } diff --git a/frontend/client/utils/social.tsx b/frontend/client/utils/social.tsx index 02b1774a..b7859474 100644 --- a/frontend/client/utils/social.tsx +++ b/frontend/client/utils/social.tsx @@ -1,60 +1,36 @@ import React from 'react'; import { Icon } from 'antd'; import keybaseIcon from 'static/images/keybase.svg'; -import { SOCIAL_TYPE, SocialAccountMap, SocialInfo } from 'types'; +import { SOCIAL_SERVICE, SocialMedia, SocialInfo } from 'types'; const accountNameRegex = '([a-zA-Z0-9-_]*)'; -export const SOCIAL_INFO: { [key in SOCIAL_TYPE]: SocialInfo } = { - [SOCIAL_TYPE.GITHUB]: { - type: SOCIAL_TYPE.GITHUB, +export const SOCIAL_INFO: { [key in SOCIAL_SERVICE]: SocialInfo } = { + [SOCIAL_SERVICE.GITHUB]: { + service: SOCIAL_SERVICE.GITHUB, name: 'Github', format: `https://github.com/${accountNameRegex}`, icon: , }, - [SOCIAL_TYPE.TWITTER]: { - type: SOCIAL_TYPE.TWITTER, + [SOCIAL_SERVICE.TWITTER]: { + service: SOCIAL_SERVICE.TWITTER, name: 'Twitter', format: `https://twitter.com/${accountNameRegex}`, icon: , }, - [SOCIAL_TYPE.LINKEDIN]: { - type: SOCIAL_TYPE.LINKEDIN, + [SOCIAL_SERVICE.LINKEDIN]: { + service: SOCIAL_SERVICE.LINKEDIN, name: 'LinkedIn', format: `https://linkedin.com/in/${accountNameRegex}`, icon: , }, - [SOCIAL_TYPE.KEYBASE]: { - type: SOCIAL_TYPE.KEYBASE, + [SOCIAL_SERVICE.KEYBASE]: { + service: SOCIAL_SERVICE.KEYBASE, name: 'KeyBase', format: `https://keybase.io/${accountNameRegex}`, icon: , }, }; -function urlToAccount(format: string, url: string): string | false { - const matches = url.match(new RegExp(format)); - return matches && matches[1] ? matches[1] : false; -} - -export function socialAccountToUrl(account: string, type: SOCIAL_TYPE): string { - return SOCIAL_INFO[type].format.replace(accountNameRegex, account); -} - -export function socialUrlsToAccounts(urls: string[]): SocialAccountMap { - const accounts: SocialAccountMap = {}; - urls.forEach(url => { - Object.values(SOCIAL_INFO).forEach(s => { - const account = urlToAccount(s.format, url); - if (account) { - accounts[s.type] = account; - } - }); - }); - return accounts; -} - -export function socialAccountsToUrls(accounts: SocialAccountMap): string[] { - return Object.entries(accounts).map(([key, value]) => { - return socialAccountToUrl(value as string, key as SOCIAL_TYPE); - }); +export function socialMediaToUrl(sm: SocialMedia): string { + return SOCIAL_INFO[sm.service].format.replace(accountNameRegex, sm.username); } diff --git a/frontend/stories/UserRow.story.tsx b/frontend/stories/UserRow.story.tsx index e7d8b8e0..029c3d97 100644 --- a/frontend/stories/UserRow.story.tsx +++ b/frontend/stories/UserRow.story.tsx @@ -2,20 +2,31 @@ import * as React from 'react'; import { BrowserRouter } from 'react-router-dom'; import { storiesOf } from '@storybook/react'; import { DONATION } from 'utils/constants'; +import { User } from 'types'; import 'components/UserRow/style.less'; import UserRow from 'components/UserRow'; -const user = { - name: 'Dana Hayes', +const user: User = { + userid: 123, + displayName: 'Dana Hayes', title: 'QA Engineer', - avatarUrl: 'https://randomuser.me/api/portraits/women/19.jpg', - ethAddress: DONATION.ETH, + avatar: { + image_url: 'https://randomuser.me/api/portraits/women/19.jpg', + }, + accountAddress: DONATION.ETH, emailAddress: 'test@test.test', - socialAccounts: {}, + socialMedias: [], }; -const cases = [ +interface Case { + disp: string; + props: { + user: User; + }; +} + +const cases: Case[] = [ { disp: 'Full User', props: { @@ -29,7 +40,7 @@ const cases = [ props: { user: { ...user, - avatarUrl: '', + avatar: null, }, }, }, @@ -38,8 +49,8 @@ const cases = [ props: { user: { ...user, - avatarUrl: '', - ethAddress: '', + avatar: null, + accountAddress: '', }, }, }, @@ -48,7 +59,7 @@ const cases = [ props: { user: { ...user, - name: 'Dr. Baron Longnamivitch von Testeronomous III Esq.', + displayName: 'Dr. Baron Longnamivitch von Testeronomous III Esq.', title: 'Amazing person, all around cool neat-o guy, 10/10 would order again', }, }, diff --git a/frontend/stories/props.tsx b/frontend/stories/props.tsx index ff9055d1..29256c52 100644 --- a/frontend/stories/props.tsx +++ b/frontend/stories/props.tsx @@ -161,33 +161,37 @@ export function getProposalWithCrowdFund({ proposalAddress: '0x033fDc6C01DC2385118C7bAAB88093e22B8F0710', dateCreated: created / 1000, title: 'Crowdfund Title', + brief: 'A cool test crowdfund', content: 'body', stage: 'FUNDING_REQUIRED', category: PROPOSAL_CATEGORY.COMMUNITY, team: [ { - name: 'Test Proposer', + userid: 123, + displayName: 'Test Proposer', title: '', - ethAddress: '0x0c7C6178AD0618Bf289eFd5E1Ff9Ada25fC3bDE7', + accountAddress: '0x0c7C6178AD0618Bf289eFd5E1Ff9Ada25fC3bDE7', emailAddress: '', - avatarUrl: '', - socialAccounts: {}, + avatar: null, + socialMedias: [], }, { - name: 'Test Proposer', + userid: 456, + displayName: 'Test Proposer', title: '', - ethAddress: '0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520', + accountAddress: '0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520', emailAddress: '', - avatarUrl: '', - socialAccounts: {}, + avatar: null, + socialMedias: [], }, { - name: 'Test Proposer', + userid: 789, + displayName: 'Test Proposer', title: '', - ethAddress: '0x529104532a9779ea9eae0c1e325b3368e0f8add4', + accountAddress: '0x529104532a9779ea9eae0c1e325b3368e0f8add4', emailAddress: '', - avatarUrl: '', - socialAccounts: {}, + avatar: null, + socialMedias: [], }, ], milestones, diff --git a/frontend/types/proposal.ts b/frontend/types/proposal.ts index 7d75bdcb..9b537831 100644 --- a/frontend/types/proposal.ts +++ b/frontend/types/proposal.ts @@ -4,7 +4,7 @@ import { CreateMilestone, ProposalMilestone, Update, - TeamMember, + User, Milestone, Comment, } from 'types'; @@ -57,7 +57,7 @@ export interface ProposalDraft { deadlineDuration: number; voteDuration: number; milestones: CreateMilestone[]; - team: TeamMember[]; + team: User[]; invites: TeamInvite[]; } @@ -72,7 +72,7 @@ export interface Proposal { stage: string; category: PROPOSAL_CATEGORY; milestones: ProposalMilestone[]; - team: TeamMember[]; + team: User[]; } export interface ProposalWithCrowdFund extends Proposal { @@ -99,7 +99,7 @@ export interface UserProposal { proposalId: number; title: string; brief: string; - team: TeamMember[]; + team: User[]; funded: Wei; target: Wei; } diff --git a/frontend/types/social.ts b/frontend/types/social.ts index cf740aaf..4c99cec2 100644 --- a/frontend/types/social.ts +++ b/frontend/types/social.ts @@ -1,15 +1,20 @@ import React from 'react'; -export type SocialAccountMap = Partial<{ [key in SOCIAL_TYPE]: string }>; +export type SocialAccountMap = Partial<{ [key in SOCIAL_SERVICE]: string }>; + +export interface SocialMedia { + service: SOCIAL_SERVICE; + username: string; +} export interface SocialInfo { - type: SOCIAL_TYPE; + service: SOCIAL_SERVICE; name: string; format: string; icon: React.ReactNode; } -export enum SOCIAL_TYPE { +export enum SOCIAL_SERVICE { GITHUB = 'GITHUB', TWITTER = 'TWITTER', LINKEDIN = 'LINKEDIN', diff --git a/frontend/types/user.ts b/frontend/types/user.ts index 8b5a4497..15467da5 100644 --- a/frontend/types/user.ts +++ b/frontend/types/user.ts @@ -1,21 +1,11 @@ -import { SocialAccountMap } from 'types'; +import { SocialMedia } from 'types'; export interface User { + userid: number; accountAddress: string; - userid: number | string; - username: string; + emailAddress: string; // TODO: Split into full user type + displayName: string; title: string; - avatar: { - '120x120': string; - }; -} - -// TODO: Merge this or extend the `User` type in proposals/reducers.ts -export interface TeamMember { - name: string; - title: string; - avatarUrl: string; - ethAddress: string; - emailAddress: string; - socialAccounts: SocialAccountMap; + socialMedias: SocialMedia[]; + avatar: { image_url: string } | null; }